Hadoop yixing(移行),新增表字段,删除表字段,修改存储格式
一、hadoop中修改存储格式,比如从 textfile 转化为 orc 格式,表中的数据的组织形式要重新改变,就要将重新创建新格式的表将原来的数据按照新的格式插入到新表中
这个时候我们不能直接对元数据修改一下就完事了,就像是一堆砖头,之前你说你按照长方体去摆放,后来你说要按圆柱体去摆放,你不能说只是动动嘴就完事了,是不是要把之前的砖头按照圆柱体的规划一个一个摆好。
再此之前我们有必要认识一下 hadoop 中的存储格式。
1)行式存储及列式存储
行式存储(textfile、sequencefile、avro)
1.行式存储
行式存储就是每一行的所有数据存储在一个 block 中。
优点:
- 因为每一行的所有字段都存在一起,因此对数据进行插入(INSERT)和修改(UPDATE)操作很方便。
- 整表查询比较方便,可以很快将整张表组装出来。select * from table
缺点:
- 查询(select)时如果涉及到某条数据,需要把该行数据所有内容都读取到内存中,即使只有 select 一两个字段也要把整行数据都读进来。读取数据的时候硬盘寻址范围很大。
- 要加速查询的话需要建立索引,建立索引需要花很多时间。
- 空值也要占固定的空间。
应用的场景:
行式存储用于存储关系型数据,用于使用数据的时候需要经常用的数据之间的依赖关系的场景,即读取的时候需要整行数据或者整行中大部分列的数据,需要经常用到插入、修改操作,比如存储用户的注册信息等。
2.列式存储
列式存储就