spark 出现很严重的数据倾斜,跑批时间很长,有时候会报错

目前在开发一个统计指标的脚本,跑批出现了严重的数据倾斜,
图片说明

有时候报java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE,但是分析sql里用到的key,在之前的商户号作为key的时候,差别也是最多的几百条,最少的几条,但是几百条的居多,以商户号和维度类别作为key的时候,分布如下

key条数正数5个
+---+---------------+--------------+
| 条数| merchant_id|statistic_type|
+---+---------------+--------------+
| 5| null| 5|
| 4|822100047220249| 5|
| 4|303300048120004| 5|
| 4|303450053310001| 5|
| 4|303650058130002| 5|
+---+---------------+--------------+

key条数倒数5个
+---+---------------+--------------+
| 条数| merchant_id|statistic_type|
+---+---------------+--------------+
| 1|822100051310533| 6|
| 1|822100059630118| 6|
| 1|822100052512420| 6|
| 1|822100055411357| 6|
| 1|822100058124973| 6|
+---+---------------+--------------+

,可是再task里,大部分都平均,就有某一个task数据量是其他的1000倍左右,看起来不像我group by的key分布不均导致的,请教各位大神,这是什么原因导致的?

你会不会是,某个物理节点物理空间满了?导致这个增多或者减少的问题

找到下面这个链接似乎靠谱点:

https://www.cnblogs.com/cssdongl/p/6594298.html

可以尝试调整并行度,将节点资源变大或者减小