在数据量特别大的情况下,数据来自hive的MapReduce查询,
发现效率特别慢在hive上使用insert overwrite local directory "XXX" select将数据导入到本地的HDFS上时直接报错,
那么我那么就需要在hive和hadoop上配置压缩方式
在执行hive的类sql语句之前,需开启一下配置
2.对hive开启以下配置
设置开启hive的压缩
set hive.exec.compress.output=true;
设置开启mapreduce的压缩
set mapreduce.output.fileoutputformat.compress=true;
配置reduce输出使用的压缩类型默认的是RECORD
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
配置压缩算法如果是需要效率的话建议使用 Cloudera的org.apache.hadoop.io.compress.SnappyCodec算法
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec;
对map阶段进行配置
set mapreduce.map.output.compress=true;
配置压缩算法如果是需要效率的话建议使用 Cloudera的org.apache.hadoop.io.compress.SnappyCodec算法
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec;
1.对hadoop的core-site.xml配置如下
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec
</value>
</property>
还可以添加如下配置
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.Lz4Codec,
com.hadoop.compression.lzo.LzopCodec