返回 导航

大数据

hangge.com

Hive - 数据存储格式详解1(基本介绍、各存储格式对比、选择建议)

作者:hangge | 2024-10-04 01:43
    为了高效存储和处理数据,Hive 支持多种数据存储格式。本文将介绍几种常见的 Hive 数据存储格式及其优缺点。通过合理选择存储格式,可以提高数据存储和查询的效率,满足不同的业务需求。

一、存储格式介绍

1,基本介绍

(1)常见的 Hive 数据存储格式主要如下:

(2)除了 TextFileSequenceFileHive 最初的版本就支持外,其它格式支持的版本如下:
  • 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)RCFileRecord Columnar File)是一种列式存储格式,专为 Hive 设计。它将数据按列存储,适合于大规模数据分析场景。

(2)优点:
  1. 列式存储,提高查询性能。
  2. 支持数据压缩,节省存储空间。
(3)缺点:
  • 写入性能较低。
  • 不适合频繁更新的场景。

5,ORC 格式

(1)ORCOptimized Row Columnar)格式是为 Hive 优化的一种高效存储格式。它在 RCFile 的基础上进行了改进,提供了更高的压缩比和更快的查询速度。

(2)优点:
  • 高度优化的压缩和查询性能。
  • 支持复杂的数据类型和 ACID 事务。
(3)缺点:
  • 需要更多的内存和计算资源。
  • 写入性能较低。

6,Parquet 格式

(1)Parquet 是一种跨平台的列式存储格式,由 ClouderaTwitter 共同开发,广泛应用于 Hadoop 生态系统。它提供了高效的存储和快速的查询性能。

(2)优点:
  • 优秀的压缩比和查询性能。
  • 跨平台支持,兼容性强。
(3)缺点:
  • 写入性能较低。
  • 不支持 ACID 事务。

附:存储格式的选择建议

1,数据量较小且需要简单的存储格式情况

  • 如果数据量较小且需要简单的存储格式,可以选择 TextFile

2,希望减小数据存储量的情况

(1)假设原始文本文件大小为:2.09G,当使用不同数据存储格式时暂用空间如下表格显示。可以发现,ORC 格式在数据存储层面性能最优。
  • 因此,在实际工作中,如果希望减少 Hive 中的数据存储量,建议使用 ORC 数据存储格式。

(2)在使用 ORC 数据存储格式的时候,最好再配合上合适的压缩格式,这样可以进一步挖掘 ORC 的存储性能。
  • 但是 ORC 自身存储能力已经非常好了,并且也支持切分。所以在选择压缩格式时只需要重点考虑压缩和解压速度就行了。
  • 常见的压缩格式中,LzoSnappy 的压缩和解压速度是最快的。针对他们两个进行对比的话,看下面这个表格。
  • 从这里可以看出来,Snappy 的压缩和解压速度相对更好一些。所以最终建议,在工作中选择 ORC + Snappy

3,需要保证兼容性的情况

(1)相对来说,Parquet 存储格式在大数据生态圈中的兼容度是最高的。
  • Parquet 官网上有一句话,说的是 Parquet 可以应用于 Hadoop 生态圈中的任何项目中。
(2)因此,如果需要跨平台兼容性和高效查询,推荐使用 Parquet
评论

全部评论(0)

回到顶部