hive解决数据倾斜问题_如何解决Hive中经常出现的数据倾斜问题

Hive 执行 MapReduce 过程中经常会出现数据倾斜问题,具体表现为:作业经常在 Reduce 过程完成 99% 的时候一直停留,最后 1% 一直保持很久才完成。这种情况是由于:在数据量很大的情况下,在 MapReduce 的 Shuffle 过程执行后,key值分布到 Reducer 节点不均匀;有的 key 少,哈希后被分在不同节点中没有问题,但是有的 key 特别的多,过于集中了,全被分配在一个 Reducer 节点,所以其他的 Reducer 都执行完了都在等这个量大的 key 值,这就导致了数据倾斜。通俗的话来讲就是,一堆干完活的人等那个干的最慢的人,不是因为那个人能力差,大家能力水平都相同,是他真的干不完……被分配太多了,别人做完了也没法帮忙。

所以这也违背了 MapReduce 方法论产生的核心思路,不怕活儿多,活多咱们可以多分配人手;最怕的就是活分配不均匀,有人干的多,有人干的少,出现时间上的浪费。这些工作在 MapReduce 过程中,往往都出现在 GROUP

BY 等分组,各种类型 JOIN 过程中。常见产生数据倾斜的原因大致有以下几种:大量空值

某个 key 值大量重复

不同数据类型关联

COUNT(DISTINCT)

接下来详细介绍各种出现以及如何避免这类问题的出现。

二、问题分类及解决思路

1.大量空值产生数据倾斜

解决思路:利用随机数将空值进行随机填充,注意:不要让随机数碰撞到其他值,提

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值