Hive优化

 -》压缩 
	(1)开启Map阶段输出压缩
		开启输出压缩功能:
		set hive.exec.compress.intermediate=true; 
		开启map输出压缩功能:
		set mapreduce.map.output.compress=true;
		设置压缩方式:
		set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
	(2)开启reduce输出端压缩
		开启最终输出压缩功能
		set hive.exec.compress.output=true;
		开启最终数据压缩功能
		set mapreduce.output.fileoutputformat.compress=true;
		设置压缩方式
		set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
		设置块压缩
		set mapreduce.output.fileoutputformat.compress.type=BLOCK; 

-》存储
	Hive存储格式:TextFile/SequenceFile(前两个为行存储,查询速度快)/orc/Parquet (前两个为列存储,减少数据的查询量)
	orc:Index Data/row Data/stripe Footer
	
	压缩比:
	    orc > parquet > textFile
	查询速度:
	    orc > textFile
	    50s > 54s

	create table itstar_log(time string, host string)
	row format
	delimited fields
	terminated by '\t'
	stored as orc;

	create table itstar(time string, host string)
	row format
	delimited fields
	terminated by '\t'
	stored as orc;

	load data local inpath '/root/a.log' into table itstar;

	insert into itstar_log select * from itstar;

-》Group by优化 

	分组:mr程序,map阶段把相同key的数据分发给一个reduce,一个key的量很大。

	解决方案: 在map端进行聚合(combiner) 
	set hive.map.aggr=true;

	设置负载均衡(map的结果随机分配到reduce中)
	set hive.groupby.skewindata=true; 

-》数据倾斜
	(1)合理避免数据倾斜
		合理设置map数
		合并小文件
		set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 
		合理设置reduce数

	(2)解决数据倾斜 
		在map端进行聚合(combiner)
		set hive.map.aggr=true; 

		设置负载均衡
		set hive.groupby.skewindata=true;
	
	(3)JVM重用 (使一个jvm实例在同一个任务中重用N次)
		mapred-site.xml 
			mapreduce.job.jvm.numtasks 
			10~20
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值