HDFS的文件压缩格式

  • Post author:
  • Post category:其他


Hadoop默认支持Gzip和BZip2的解压缩方式,可直接读取(hadoop fs -text命令),但hive只能用TEXTFILE格式的表加载,然后再insertoverwrite 到其他格式的表(比如SEQUENCEFILE表),如果hive其他格式的表想要直接加载压缩格式数据,需要重写INPUTFORMAT和OUTPUTFORMAT文件类。

BZip2和LZO(提供block级的压缩)支持文件切分,Gzip和Snappy则不支持。 不支持则hadoop不能并行的进行map操作。

hadoop中支持的压缩格式

DEFLATEorg.apache.hadoop.io.compress.DefaultCodec

gzip org.apache.hadoop.io.compress.GzipCodec

bzip org.apache.hadoop.io.compress.BZip2Codec

Snappy org.apache.hadoop.io.compress.SnappyCodec

LZO:

org.apache.hadoop.io.compress.LzopCodec或者com.hadoop.compression.lzo.LzopCodec;

org.apache.hadoop.io.compress.LzoCodec或者com.hadoop.compression.lzo.LzoCodec;

可以查看目前hive已加载的所以编解码器

set io.compression.codecs;

中间结果压缩

set hive.exec.compress.intermediate=true;

set hive.intermediate.compression.codec=org.apache.Hadoop.io.compress.LzoCodec;

map结果压缩最好使用snappy的,因为压缩的前提是map输出非常大,影响io,如果中间结果数据集比较小反而会拖慢速度。

设置map输出结果压缩

Set mapred.map.output.compression.codec=org.apache.Hadoop.io.compress.SnappyCodec;

最终输出结果压缩

hive.exec.compress.output和mapred.output.compression.codec是hive-site.xml中的配置参数,

而mapred.output.compress 和mapred.output.compression.codec 是hdfs-site.xml的配置参数。

都可以配置实现。


Hive格式各种格式下不同压缩算法的比较


Hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)


Hive各种文件格式与压缩方式的结合测试


Hive支持的文件格式与压缩算法



版权声明:本文为lunan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。