Hive - 数据存储格式详解1(基本介绍、各存储格式对比、选择建议)
作者:hangge | 2024-10-04 01:43
为了高效存储和处理数据,Hive 支持多种数据存储格式。本文将介绍几种常见的 Hive 数据存储格式及其优缺点。通过合理选择存储格式,可以提高数据存储和查询的效率,满足不同的业务需求。
一、存储格式介绍
1,基本介绍
(1)常见的 Hive 数据存储格式主要如下:
(2)除了 TextFile、SequenceFile 在 Hive 最初的版本就支持外,其它格式支持的版本如下:
- RCFile 数据存储格式是从 Hive 0.6 版本开始支持的。
- Avro 数据存储格式是从 Hive 0.9 版本开始支持的。
- ORC 数据存储格式是从 Hive 0.11 版本开始支持的。
- PARQUET 数据存储格式是 Hive 0.13 版本开始支持的。
2,TextFile 格式
(1)TextFile 是 Hive 中最基本和最常见的数据存储格式。它以纯文本的形式存储数据,行与行之间通过换行符分隔,列与列之间通常通过特定的分隔符(如逗号、制表符等)分隔。
(2)优点:
- 简单易用,兼容性好。
- 适合小规模数据集。
(3)缺点:
- 存储效率低,占用空间大。
- 查询性能差,不支持复杂的数据类型。
3,SequenceFile 格式
(1)SequenceFile 是一种二进制格式,适用于存储键值对。它是 Hadoop 中常用的一种存储格式,具有良好的压缩性能和高效的读写能力。
(2)优点:
- 支持数据压缩,存储效率高。
- 读写性能优于 TextFile。
(3)缺点:
- 可读性差,调试不便。
- 需要额外的序列化和反序列化操作。
4,RCFile 格式
(1)RCFile(Record Columnar File)是一种列式存储格式,专为 Hive 设计。它将数据按列存储,适合于大规模数据分析场景。
(2)优点:
- 列式存储,提高查询性能。
- 支持数据压缩,节省存储空间。
(3)缺点:
- 写入性能较低。
- 不适合频繁更新的场景。
5,ORC 格式
(1)ORC(Optimized Row Columnar)格式是为 Hive 优化的一种高效存储格式。它在 RCFile 的基础上进行了改进,提供了更高的压缩比和更快的查询速度。
(2)优点:
- 高度优化的压缩和查询性能。
- 支持复杂的数据类型和 ACID 事务。
(3)缺点:
- 需要更多的内存和计算资源。
- 写入性能较低。
6,Parquet 格式
(1)Parquet 是一种跨平台的列式存储格式,由 Cloudera 和 Twitter 共同开发,广泛应用于 Hadoop 生态系统。它提供了高效的存储和快速的查询性能。
(2)优点:
- 优秀的压缩比和查询性能。
- 跨平台支持,兼容性强。
(3)缺点:
- 写入性能较低。
- 不支持 ACID 事务。
附:存储格式的选择建议
1,数据量较小且需要简单的存储格式情况
- 如果数据量较小且需要简单的存储格式,可以选择 TextFile
2,希望减小数据存储量的情况
(1)假设原始文本文件大小为:2.09G,当使用不同数据存储格式时暂用空间如下表格显示。可以发现,ORC 格式在数据存储层面性能最优。
- 因此,在实际工作中,如果希望减少 Hive 中的数据存储量,建议使用 ORC 数据存储格式。
(2)在使用 ORC 数据存储格式的时候,最好再配合上合适的压缩格式,这样可以进一步挖掘 ORC 的存储性能。
- 但是 ORC 自身存储能力已经非常好了,并且也支持切分。所以在选择压缩格式时只需要重点考虑压缩和解压速度就行了。
- 常见的压缩格式中,Lzo、Snappy 的压缩和解压速度是最快的。针对他们两个进行对比的话,看下面这个表格。
- 从这里可以看出来,Snappy 的压缩和解压速度相对更好一些。所以最终建议,在工作中选择 ORC + Snappy。
3,需要保证兼容性的情况
(1)相对来说,Parquet 存储格式在大数据生态圈中的兼容度是最高的。
- Parquet 官网上有一句话,说的是 Parquet 可以应用于 Hadoop 生态圈中的任何项目中。
(2)因此,如果需要跨平台兼容性和高效查询,推荐使用 Parquet。
全部评论(0)