【Hive】压缩格式

常见压缩格式

压缩方式 压缩比 压缩速度 解压缩速度 是否可分割
gzip 13.4% 21 MB/s 118 MB/s
bzip2 13.2% 2.4MB/s 9.5MB/s
lzo 20.5% 135 MB/s 410 MB/s
snappy 22.2% 172 MB/s 409 MB/s

压缩格式对应的编/解码器

压缩格式 对应的编/解码器
DEFLATE org.apache.hadoop.io.compress.DefaultCodec
Gzip org.apache.hadoop.io.compress.GzipCodec
BZip2 org.apache.hadoop.io.compress.BZip2Codec
LZO com.hadoop.compress.lzo.LzopCodec
Snappy org.apache.hadoop.io.compress.SnappyCodec

压缩参数配置

1.在Hadoop中配置(mapred-site.xml文件)

参数 默认值
io.compression.codecs (在core-site.xml中配置) org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.Lz4Codec
mapreduce.map.output.compress false
mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.DefaultCodec
mapreduce.output.fileoutputformat.compress false
mapreduce.output.fileoutputformat.compress.codec org.apache.hadoop.io.compress.DefaultCodec
mapreduce.output.fileoutputformat.compress.type RECORD

2.Hive命令行session级别
(1) 开启Map输出阶段压缩

#开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
#开启map阶段输出压缩功能
set mapreduce.map.output.compress=true;
#设置map阶段的压缩方式
set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;

(2) 开启Reduce输出阶段压缩

#开启Hive最终输出压缩
set hive.exec.compress.output=true;
#开启mapreduce最终输出压缩
set mapreduce.output.fileoutputformat.compress=true;
#设置mapreduce最终输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
#设置mapreduce最终输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

总结

没有一劳永逸的压缩格式,要根据实际情况合理选用。选择标准主要有如下三点:

  1. 压缩比:压缩比越高,压缩后文件越小;
  2. 压缩效率:越快越好;
  3. 压缩文件是否支持再分割:这会影响map阶段的并行;

你可能感兴趣的:(Hive)