0 序言
续接[数据存储] 浅谈大数据领域的数据存储格式:ORC / Avro / Parquet / Arrow- 博客园/千千寰宇,展开回顾一下 Hive 的数据存储格式。
1 概述: Hive
Hive支持多种存储格式,选择合适的存储格式对于提升查询性能和存储效率至关重要。
常见的Hive存储格式包括TextFile、SequenceFile、RCFile、ORCFile和Parquet。
这些格式中,TextFile是默认的存储格式,而SequenceFile、RCFile、ORCFile和Parquet则提供了更高效的数据压缩和查询性能。
TextFile存储格式
TextFile是Hive的默认存储格式,它将数据以纯文本形式存储,不进行任何压缩处理。
创建TextFile格式的Hive表时,可以直接使用LOAD DATA语句将数据加载到表中,这是因为TextFile不涉及数据压缩,因此加载速度快。
但是,TextFile格式的缺点是磁盘占用较大,且在查询时需要逐个字符判断分隔符,导致查询效率不高。
SequenceFile存储格式
SequenceFile是Hadoop提供的一种二进制文件格式,支持数据的可分割和压缩。
它以键值对的形式存储数据,可以选择记录压缩或块压缩。
SequenceFile格式的表不能直接从本地文件加载数据,需要先将数据导入到TextFile格式的表中,然后使用INSERT语句导入到SequenceFile格式的表中。
RCFile存储格式
RCFile(Row Columnar File)是一种行列混合存储的文件格式,它先将数据按行分组,然后在每个行组内部进行列式存储。
RCFile格式的表在查询时可以避免读取不必要的列,且同列数据类型一致,有利于数据压缩。
但是,RCFile在重建行数据时可能会有较大的开销,尤其是当数据分布在不同的HDFS块上时。
ORCFile存储格式
ORCFile(Optimized Row Columnar File)是对RCFile的优化,提供了更高效的压缩和查询性能。
ORCFile在每个文件中提供了多级索引,可以快速定位查询数据,减少不必要的磁盘和网络I/O。
ORCFile支持ACID事务,允许对Hive表的单个记录进行修改。
创建支持ACID事务的ORCFile格式的Hive表时,需要将表设置为分桶表,并在表属性中添加'transactional'='true'。
Parquet存储格式
Parquet是另一种高性能的列式存储格式,它将数据分成多个行组,每个行组内部再分成若干页。
Parquet文件中包含了丰富的元数据信息,有助于提升数据读取效率。
Parquet在嵌套式结构支持上表现更佳,而ORC在多层级嵌套表达上可能会有性能损失。
存储格式的选择
在选择Hive存储格式时,需要考虑数据的压缩比、查询速度和HDFS上的文件名。
ORCFile通常提供最高的压缩比,而Parquet和ORCFile在查询速度上相近。
如果表中的数据需要压缩,可以选择SequenceFile、RCFile、ORCFile或Parquet格式。
对于大数据量的场景,选择支持切分的压缩格式如Parquet的Lzo压缩会更加合适。
在实际应用中,可以根据数据的特点和查询需求选择最合适的存储格式。
例如,对于需要频繁查询某几列数据的场景,列式存储格式如ORCFile或Parquet可能更优。
而对于需要经常全表扫描的场景,行式存储格式如TextFile可能更合适。
此外,还可以根据存储和查询的性能需求,对Hive表进行相应的配置优化,如设置压缩类型和大小、调整内存缓冲池大小等1。
Y 推荐文献
[数据存储] 浅谈大数据领域的数据存储格式:ORC / Avro / Parquet / Arrow- 博客园/千千寰宇
X 参考文献