Hive skew join

Hive在reduce的过程中会将相同的key放入同一个reduce处理,当某个key的数据量过大时就会发生数据倾斜。

两个表进行join时,数据量大的key称为skew key,此时可以通过以下参数对这种情况进行优化:

1.hive.optimize.skewjoin=true (default :false)

        该参数通过在Hive 对物理执行计划优化时 ,添加一个Map Join用于处理Skew Key ;

        目前该优化方案还不支持outer join,并且数据倾斜的key出现在join的最后一张表时不会触发skew key优化,如:select a.* , b.* from table_a a join table_b b on a.id =b.id,如果倾斜key 在表b的时候是不会被优化成skew join的, 如果出现在表 a 则会;   

2.hive.skewjoin.key = <判断key为Skew key 的阈值>  (default : 100000) 
        在参数 hive.optimize.skewjoin=true 时, Hive的reuce 任务会在处理join key 的时候 判断其数量是否大于该 阈值,如果是将作为一个Skew Join 处理 

3.hive.skewjoin.mapjoin.map.tasks = <用于处理skew join的map join 的最大数量>  (defaul : 10000)
 

参考博客:Hive优化—skew join优化原理详解_看得出的就是的博客-CSDN博客

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值