Hive | hive使用压缩


hive中的数据使用压缩的好处(执行查询时会自动解压):

  1. 可以节约磁盘的空间,基于文本的压缩率可达40%+;
  2. 压缩可以增加吞吐量和性能量(减小载入内存的数据量),但是在压缩和解压过程中会增加CPU的开销。所以针对IO密集型的jobs(非计算密集型)可以使用压缩的方式提高性能。

主流的压缩算法

查看集群的支持的压缩算法.

hive -e "set io.compression.codecs"

返回支持的压缩算法

io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.DeflateCodec,
org.apache.hadoop.io.compress.SnappyCodec,
org.apache.hadoop.io.compress.Lz4Codec

常用的压缩算法:

  • Snappy
  • Gzip
  • ZLIB

hive文件格式

  • TEXTFILE: 默认格式,数据不做压缩,磁盘开销大。如需压缩,可使用Gzip,Bzip2压缩算法,但是不会对数据进行切分;
  • SEQUENCEFILE: 二进制文件,具有使用方便、可分割、可压缩.SequenceFile支持三种压缩选择:NONE,RECORD(压缩率低),BLOCK(常用且压缩性能最好);
  • RCFILE: RCFILE是一种行列存储相结合的存储方式;
  • ORCFILE: 0.11以后出现.

hive配置压缩

建表时申明文件的存储格式,默认为TEXTFILE。如使用压缩常使用分块压缩SEQUENCEFILE

CREATE TABLE A(
    ...
)
STORED AS SEQUENCEFILE

数据处理的中间过程和结果使用Snappy算法进行压缩。

-- 任务中间压缩
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set hive.intermediate.compression.type=BLOCK;

-- map/reduce 输出压缩
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapred.output.compression.type=BLOCK;

压缩测试案例

Hive原始数据为119.2G。

压缩算法TEXTFILE格式SEQUENCEFILERCFILEORCFILE
不压缩119.2G54.1G20.0G98G
Snappy30.2G23.6G13.6G27.0G
Gzip18.8G14.1G不支持15.2 G
ZLIB不支持不支持10.1G不支持

参考

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值