Hive学习(四):Hive文件存储结构

本文介绍了Hive支持的各种文件存储结构,包括TextFile、SequenceFile、RCFile、ORCFile和Parquet等,并详细分析了它们的特点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:Hive学习(三):Hive数据类型

文件结构

Hive支持多种文件的存储结构,以对应不同的场景,Hive通过在创建表时的sorted as来指定文件结构。

基础知识

对于一张表数据的存储

idnamesex
1张三
2李四

行式存储

以一行数据为单位进行连续存储,表现为:

  • 优势:插入新纪录时,直接在数据尾部添加即可,效率高
  • 劣势:如果在查询时只需要name,也需要加载整行数据,消耗大

列式存储

以一列数据为单位进行连续存储,表现为:

  • 优势:查询只需要name时,只需要读出连续的name数据即可,效率高
  • 劣势:插入新记录时,需要到每一个列单元后插入新的列数据

类型

TextFile

文本文件,为默认设置,行式存储。不做压缩。可结合压缩软件使用,如Bzip2,查询时Hive自动对其进行解压。磁盘开销大,数据解析开销大。

SequenceFile

二进制序列化文件,行式存储。使用方便,可分割,可压缩,有none, record, block三种压缩方式的选择

  • none:不压缩
  • record:每条记录到文件时都压缩
  • block:文件大小达到要压缩的块大小时压缩,压缩率更高

RCFile

行列式存储,先按行分为行组,每个组里列式储存,相同的数据不会重复存储

相对于单纯的行存储,能够只读取符合条件的几个行组。

相对于单纯的列存储,如果列数据不在同一个hdfs块上,会进行列重组,而RCFile的列一定在同一个块上,减少了列重组的开销。

ORCFile

Hive推出的优化版RCFile,更高效,它的设计是为了克服其他Hive文件格式的限制。使用ORC文件可以提高Hive读写和处理数据时的性能。

 从结构上能看到,ORC在RC的行组基础上,在加上了Index Data和Stripe Footer形成了一个Stripe

  • Index Data:每列的最小值和最大值以及每列中的行位置。行索引项提供偏移量,用于在解压缩块中寻找正确的压缩块和字节
  • Stripe Footer:存了行数和每个列的数据类型。它还包含列级聚合计数、最小值、最大值和总和
  • File Footer:包含文件中Stripe的列表、每个Stripe的行数和每个列的数据类型。它还包含列级聚合计数、最小值、最大值和总和。

Parquet

列式存储,擅长处理深度嵌套数据,二进制文件,支持非常高效的压缩和编码方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值