hive的压缩本质上指的是MapReduce的压缩,因为hive其实就是MapReduce的高级语言版(SQL),hive SQL底层的运行也都是解析成MapReduce程序去运行的。这里的压缩涉及到两个方面,一个是临时的缓存数据,一个是永久的落地数据。缓存数据其实就是map方法的输出,永久的落地数据当然就是reduce的输出了(网上还有把map读取的数据算一个阶段,觉得不需要特别设置就不说了)。压缩种类不少,各有各的特点,需要各位根据自己的场景选择合适的压缩方式。
1、lzo压缩(map、reduce最常用)
压缩比:20% 压解速度:比较快 是否支持split:支持(需要创建索引)
2、snappy压缩(map最常用)
压缩比:25% 压解速度:比lzo块 是否支持split:不支持
3、gzip压缩(很少用)
压缩比:13% 压解速度:很慢 是否支持split:不支持
4、bzip2压缩(很少用)
压缩比:和gzip差不多 压解速度:很慢 是否支持split:支持