数据倾斜解决方案汇总

数据倾斜解决方案汇总如何解决数据倾斜问题背景1、事前对连接 key 进行预处理2、大表关联小表,一般用 mapjoin3、倾斜数据分而治之4、倾斜数据打散处理总结如何解决数据倾斜问题背景分布式环境下经常会碰到数据倾斜的问题,因为实际业务中的数据很难均匀分布,有些数据中会存在大量重复的 key ,例如某个 ID 的用户活跃行为特别频繁,某个时间段系统在线的用户人数特别多等等。在具体任务中,导致数据倾斜的操作主要是发生在 group by、join 等需要数据shuffle的操作中,这些过程需要根据 k
摘要由CSDN通过智能技术生成

如何解决数据倾斜问题

背景

分布式环境下经常会碰到数据倾斜的问题,因为实际业务中的数据很难均匀分布,有些数据中会存在大量重复的 key ,例如某个 ID 的用户活跃行为特别频繁,某个时间段系统在线的用户人数特别多等等。

在具体任务中,导致数据倾斜的操作主要是发生在 group by、join 等需要数据shuffle的操作中,这些过程需要根据 key 进行数据汇集处理,其中容易卡住的往往是 join 操作。当某个或者某些 key 的数据量远大于其他 key 时,处理这些 key 的任务运行时间也远大于其他任务,从而拖累整个任务时长。

数据倾斜的问题不解决好的话,不仅没办法充分利用分布式带来的数据处理优势,而且还可能导致内存消耗过大,超负荷导致任务延迟或者失败。本文将结合在日常工作中碰到的导致数据倾斜的问题进行拆解,追溯问题出现的源头,更好地预防与解决数据倾斜问题。

1、事前对连接 key 进行预处理

不要着眼于问题出现之后再找应对方案,可以换个思路,在事前先避免数据倾斜问题的发生。

我们一般的思维惯性是碰到问题再找解决方案,但碰多了数据倾斜会发现,大多的数据倾斜都是跟业务无光的数据导致的。我们能在读表之后第一件事就是尽可能的过滤不必要的数据,理清业务含义先过滤脏数据和业务不相关的数据。

过滤的数据具体可以分为以下两种情况:

(1)两个表连接 key 存在大量的 NULL 数据没有过滤,参与进了 join 的执行。其中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值