hive 优化

表的优化
(1)小表join大表
hive版本升级后,小表join大表和大表join小表的执行计划查不了多少了
(2)mapjoin功能(默认是打开的)set hive.auto.convert.join = true;
将小表加入内存
(3)空值
空值导致的数据倾斜,可以将空值处理为concat(‘hive’, rand()),就是加一个随机数
(4)map端进行聚合
a.是否在Map端进行聚合,默认为True
hive.map.aggr = true
b.在Map端进行聚合操作的条目数目
hive.groupby.mapaggr.checkinterval = 100000
c.有数据倾斜的时候进行负载均衡(默认是false)
hive.groupby.skewindata = true
当选项设定为 true,生成的查询计划会有两个MR Job。第一个MR Job中,Map的输出结果会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MR Job再根据预处理的数据结果按照Group By Key分布到Reduce中(这个过程可以保证相同的Group By Key被分布到同一个Reduce中),最后完成最终的聚合操作
(5)distinct操作
只要做distinct,就用不到分区。
select count(*) from (
select key from table1 group by key)a
(6)对表进行过滤后,再关联
select * from (select * from table1 where dt=‘2019-06-01’)a
join …
(7)select count(1) from tb where dt=‘2019-06-01’
改写为:select count(1) from tb where dt=‘2019-06-01’ group by dt
(8)慎用动态分区
MR优化
hive运行在MapReduce上,所以进行MR优化
(1)合理的map数:过多,初始化会比执行时间长,造成资源浪费。过少,则得处理一个map的时间过长,比较耗时
(2)合理的reduce数。有多少个reduce就会生成多少个小文件,reduce过多会小文件过多,也造成资源浪费
(3)对小文件进行合并
(4)对于大文件适当提高map数量
并行执行
JVM重用
分区、分桶

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值