hive的数据存储与压缩

踩坑实录:把hive表的数据导入redis时,没有正确认识hive是压缩存储的,导致73G的hive文件导入redis后,redis的存储涨了900G,超过了redis的警戒线。后续评估redis的存储空间到底涨多少,还是应该先导入小量数据,查看存储涨幅,再线性预估全量涨幅。

本文梳理一下hive表的存储与压缩方式。

参考文章一文彻底搞懂Hive的数据存储与压缩-阿里云开发者社区

目录

一、hive的压缩格式

二、hive的存储方式

1)行式存储

2)列式存储

三、常见的数据格式

1)Text File

2)SequenceFile

3)RCfile

4)ORC Files(Optimized Row Columnar)


一、hive的压缩格式

DEFAULT、Gzip、Bzip、Snappy、Lzo

二、hive的存储方式

1)行式存储

  • 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在;
  • 优点:这种存储格式比较方便进行INSERT/UPDATE操作;
  • 不足之处就是如果查询只涉及某几个列,它会把整行数据都读取出来,不能跳过不必要的列读取。同时空间利用率不高。

2)列式存储

  • 每一列的数据都是存储在一起的,每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法,高效的压缩率,不仅节省储存空间也节省计算内存和CPU;
  • 优点:查询时,只有涉及到的列才会被查询,不会把所有列都查询出来,即可以跳过不必要的列查询,在查询只需要少数几个字段的时候,能大大减少读取的数据量;
  • 缺点:INSERT/UPDATE很麻烦或者不方便,不适合扫描小量的数据

三、常见的数据格式

常见的数据格式如下,我简单记录下标红的部分
1.Text File、2.SequenceFile、3.RCFile、4.Avro Files、 5.ORC Files、6.Parquet、7.Custom INPUTFORMAT and OUTPUTFORMAT(用户自定义格式)

1)Text File

存储方式为行存储。数据不做压缩,磁盘开销大,数据解析开销大。这种格式用了压缩以后不支持split。

2)SequenceFile

SequenceFile是Hadoop API提供的一种二进制文件支持,存储方式为行存储,其具有使用方便、可分割、可压缩的特点。

3)RCfile

存储方式:数据按行分块,每块按列存储

Record Columnar的缩写,是Hadoop中第一个列式存储格式。能够很好的压缩和快速的查询性能,但是不支持模式演进。是一种行列存储相结合的存储方式。

首先,其将数据按行分块,保同一行的数据位于同一个块上,避免读一个记录需要读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取,并且能跳过不必要的列读取

4)ORC Files(Optimized Row Columnar)

存储方式:数据按行分块 每块按照列存储(不是真正意义上的列存储,可以理解为分段列存储,你可以对照我们讲的那个例子来理解)

ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。和Parquet类似,它并不是一个单纯的列式存储格式,仍然是首先根据行组分割整个表,在每一个行组内进行按列存储。

ORC文件是自描述的,它的元数据使用Protocol Buffers序列化,并且文件中的数据尽可能的压缩以降低存储空间的消耗,目前也被Spark SQL、Presto等查询引擎支持,但是Impala对于ORC目前没有支持,仍然使用Parquet作为主要的列式存储格式

ORC文件特点是压缩快 快速列存取,是rcfile的改良版本,相比RC能够更好的压缩,能够更快的查询,支持各种复杂的数据类型,比如datetime,decimal,以及复杂的struct是以二进制方式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。

需要注意的是 ORC在读写时候需要消耗额外的CPU资源来压缩和解压缩,当然这部分的CPU消耗是非常少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值