下面简要介绍hive支持的压缩算法以及存储格式。
1.MR支持的压缩编码
如下表所示:
2.Hive支持的压缩算法
hive中常用的数据压缩算法有:bzip2、gzip、lzo、snappy等。Google几年前发布了一组对于这些算法的测试数据,如下表所示:
暂无bzip2的确切数据,但根据经验,从压缩比来说:bzip2 > gzip > lzo > snappy;从解压速度来说:snappy > lzo > gzip > bzip2。
如果要检查hadoop支持哪些压缩格式,可执行命令“bin/hadoop checknative”。
snappy的压缩的优点:高压缩解压速度、压缩速率还行。缺点:不能分片、压缩率比Gzip小,hadoop本身不支持,需要手动安装。使用场景:当Mapreduce的map阶段输出的数据比较大时;作为map阶段输出的数据比较大时;作为map在MapReduce程序中间数据比较大的时候;用snappy压缩 减少网络IO 提高效率到reduce的中间数据的压缩格式。作为一个mapreduce作业的输出和另一个mapreduce的输入。
鉴于snappy不能分片的特点,如果有一个10G的文件存储为parquet,然后压缩,但是还是远远大于128M,那么这种情况下不建议使用snappy压缩。