Hive表jion数据倾斜问题解决办法

1)过滤掉脏数据:

如果大key是无意义的脏数据,直接过滤掉。本场景中大key无实际意义,为非常脏数据,直接过滤掉。

2) 预处理数据:

数据做一下预处理,尽量保证join的时候,同一个key对应的记录不要有太多。

3) 增加reduce个数:

如果数据中出现了多个大key,增加reduce个数,可以让这些大key落到同一个reduce的概率小很多。

4) 转换为mapjoin:

如果两个表join的时候,一个表为小表,可以用mapjoin做。

5) 大key单独处理:

将大key和其他key分开处理

6) hive.optimize.skewjoin:

会将一个join sql 分为两个job。另外可以同时设置下hive.skewjoin.key,默认为10000。参考:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

参数对full outer join无效。

7) 调整内存设置:

适用于那些由于内存超限内务被kill掉的场景。通过加大内存起码能让任务跑起来,不至于被杀掉。该参数不一定会明显降低任务执行时间。如:

set mapreduce.reduce.memory.mb=5120 ;

set mapreduce.reduce.java.opts=-Xmx5000M -XX:MaxPermSize=128m ;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值