转载地址:https://zhuanlan.zhihu.com/p/34437382
hive中的数据使用压缩的好处(执行查询时会自动解压):
可以节约磁盘的空间,基于文本的压缩率可达40%+;压缩可以增加吞吐量和性能量(减小载入内存的数据量),但是在压缩和解压过程中会增加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常用的压缩算法:
SnappyGzipZLIB建表时申明文件的存储格式,默认为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; --只有SEQUENCEFILE格式需要设置 -- 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; --只有SEQUENCEFILE格式需要设置Hive原始数据为119.2G。
