Hive 压缩

压缩优点
  • 省空间
  • 网络传输快
  • 降低IO
压缩缺点
  • CPU负载增加
  • 如果不支持分割,并行度低
常用压缩
名称code压缩压缩时间解压时间是否支持分割
Snappyorg.apache.hadoop.io.compress.SnappyCodec49.96%6.4119.84
gziporg.apache.hadoop.io.compress.GzipCodec31.90%85.6721.82
lzocom.hadoop.compression.lzo.LzopCodec/com.hadoop.compression.lzo.LzoCodec48.82%7.6111.17Yes If Index
lz4org.apache.hadoop.io.compress.DefaultCodec49.46%6.452.36
bzip2org.apache.hadoop.io.compress.BZip2Codec27.83%142.3262.51
hadoop配置
  • 启用native
    编译时需要启用native,可使用hadoop checknative命令检查是否启用。
  • 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,
	org.apache.hadoop.io.compress.SnappyCodec
	</value>
</property>	
  • mapred-site.xml
    这个配置文件中,分为总的输出和中间的输出(map),可根据实际情况配置,需要修改时可自行修改。
<property>
	<name>mapreduce.output.fileoutputformat.compress</name>
	<value>true</value>
</property>
<property>
	<name>mapreduce.output.fileoutputformat.compress.codec</name>
	<value>org.apache.hadoop.io.compress.BZip2Codec</value>
</property>	

<!--启用map中间文件压缩-->
<property> 
    <name>mapreduce.map.output.compress</name> 
    <value>true</value> 
</property> 
<!--启用map中间压缩类-->
<property>
   <name>mapred.map.output.compression.codec</name>
   <value>com.hadoop.compression.SnappyCodec</value>
</property>
Hive配置
  • 命令方式(推荐使用)
    SET hive.exec.compress.output=true;
    SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;
--最佳实践
SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;

create table page_views_bzip2
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
as select * from page_views;
--最后还原设置
set xxx=yyy
  • hive-site.xml
总结
  • 输入端
    最好使用支持分割的压缩方式,多一个task并行执行。

  • map端
    使用解压缩速度快的压缩方式

  • 输出端
    如果结果不作为下一个作业的输入,使用高压缩的压缩方式

  • 其他
    时间与CPU负载成反比,压缩越多,集群负载越大。如果集群负载很大了,最好不要使用压缩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值