Spark 数据倾斜问题

1.前提是定位数据倾斜,是 OOM 了,还是任务执行缓慢,看日志,看 WebUI

2.解决方法,有多个方面:

1)避免不必要的 shuffle,如使用广播小表的方式,将 reduce-side-join 提升为 map-side-join

2)分拆发生数据倾斜的记录,分成几个部分进行,然后合并 join 后的结果(借用中间临时表)

3)改变并行度,可能并行度太少了,导致个别 task 数据压力大

4)两阶段聚合,先局部聚合,再全局聚合

5)自定义 paritioner,分散 key 的分布,使其更加均匀

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容