用表格做网站,建设网站必备条件,wordpress小米,低成本网站制作Hadoop yixing(移行)#xff0c;新增表字段#xff0c;删除表字段#xff0c;修改存储格式
一、hadoop中修改存储格式#xff0c;比如从 textfile 转化为 orc 格式#xff0c;表中的数据的组织形式要重新改变#xff0c;就要将重新创建新格式的表将原来的数据按照新的格…Hadoop yixing(移行)新增表字段删除表字段修改存储格式
一、hadoop中修改存储格式比如从 textfile 转化为 orc 格式表中的数据的组织形式要重新改变就要将重新创建新格式的表将原来的数据按照新的格式插入到新表中
这个时候我们不能直接对元数据修改一下就完事了就像是一堆砖头之前你说你按照长方体去摆放后来你说要按圆柱体去摆放你不能说只是动动嘴就完事了是不是要把之前的砖头按照圆柱体的规划一个一个摆好。
再此之前我们有必要认识一下 hadoop 中的存储格式。
1行式存储及列式存储
行式存储textfile、sequencefile、avro
1.行式存储
行式存储就是每一行的所有数据存储在一个 block 中。
优点
因为每一行的所有字段都存在一起因此对数据进行插入INSERT和修改(UPDATE)操作很方便。整表查询比较方便可以很快将整张表组装出来。select * from table
缺点
查询select时如果涉及到某条数据需要把该行数据所有内容都读取到内存中即使只有 select 一两个字段也要把整行数据都读进来。读取数据的时候硬盘寻址范围很大。要加速查询的话需要建立索引建立索引需要花很多时间。空值也要占固定的空间。
应用的场景
行式存储用于存储关系型数据用于使用数据的时候需要经常用的数据之间的依赖关系的场景即读取的时候需要整行数据或者整行中大部分列的数据需要经常用到插入、修改操作比如存储用户的注册信息等。
2.列式存储
列式存储就是每一列的所有数据存在一起不同列之间可以分开存储。
优点
每一列单独存储因此仅select 个别列的时候可以仅读取需要的那几个列相当于为每一列都建立索引。因此磁盘寻道范围小。数据压缩。列式存储的时候可以为每一列创建一个字典存储的时候就仅存储数字编码即可降低了存储空间的需求
缺点
select 完成时被选中的数据需要重新组装插入insert 和修改update操作比较麻烦。
应用场景
列式存储适合分布式数据库和数据仓库适合于对大量数据进行统计分析列于列之间关联性不强仅进行插入和读取操作的场景如网站流量统计、用户行为分析等。
2、具体的文件格式
1. TextFile
默认格式存储方式为行存储数据不做压缩磁盘开销大数据解析开销大。可结合 Gzip、Bzip2 使用(系统自动检查执行查询时自动解压)但使用 这种方式压缩后的文件不支持 splitHive 不会对数据进行切分从而无法对数据进行并行操作。并且在反序列化过程中必须逐个字符判断是不是分隔符和行结束符因此反序列化开销会比 SequenceFile 高几十倍 。
2. SequenceFile
SequenceFile 是 Hadoop API 提供的一种二进制文件支持存储方式为行存储其具有使用方便、可分割、可压缩的特点。SequenceFile 支持三种压缩选择NONERECORDBLOCK。Record 压缩率低一般建议使用 BLOCK 压缩。优势是文件和 hadoop api 中的 MapFile 是相互兼容的 。
3. Avro
Avro格式是Hadoop的一种基于行的存储格式被广泛用作序列化平台。Avro格式以JSON格式存储模式使其易于被任何程序读取和解释。数据本身以二进制格式存储使其在Avro文件中紧凑且高效。Avro格式是语言中立的数据序列化系统。它可以被多种语言处理目前是C、C、C#、Java、Python和Ruby。Avro格式的一个关键特性是对随时间变化的数据模式的强大支持即模式演变。Avro处理模式更改例如缺少字段、添加的字段和更改的字段。Avro格式提供了丰富的数据结构。例如您可以创建包含数组、枚举类型和子记录的记录。
4. RCFile
RCFile是为基于MapReduce的数据仓库系统设计的数据存储结构。它结合了行存储和列存储的优点可以满足快速数据加载和查询有效利用存储空间以及适应高负载的需求。RCFile是由二进制键/值对组成的flat文件它与sequence file有很多相似之处,在数仓中执行分析时这种面向列的存储非常有用。当我们使用面向列的存储类型时执行分析很容易。缺点是RC不支持schema扩展如果要添加新的列则必须重写文件这会降低操作效率。
5. OrcFile
Apache ORC是Apache Hadoop生态系统面向列的开源数据存储格式它与Hadoop环境中的大多数计算框架兼容,ORC代表“优化行列”它以比RC更为优化的方式存储数据提供了一种非常有效的方式来存储关系数据然后存储RC文件。ORC将原始数据的大小最多减少75数据处理的速度也提高了。
6. Parquet
与以行方式存储数据的传统方法相比Parquet文件格式在存储和性能方面更高效。这对于从“宽”具有许多列表中读取特定列的查询特别有用因为只读取需要的列并且最小化 IO。Parquet的独特功能之一是它也可以以柱状方式存储具有嵌套结构的数据。这意味着在 Parquet 文件格式中即使是嵌套字段也可以单独读取而无需读取嵌套结构中的所有字段。Parquet 格式使用记录分解和组装算法以柱状方式存储嵌套结构。
3压缩算法
二、存量表修改存储格式如何操作
假如之前一张表 table1 是 textfile 格式的因为服务器这边资源紧张要改为 orc 格式的
算法
首先我们要先建一张表table1_2407bak2 存储格式定义为 orc
开启动态分区
将历史分区中的数据插入到table1_2407bak2表中最好一段 sql 扫描分区数不要超过 200 个分区。
然后就是将table1改名为table1_2407bak
将table1_2407bak2改名为table1 完成数据存储格式的改变table1_2407bak是按照之前的存储格式进行存储的备份数据