数据倾斜发生时,某一个或者几个Reduce Task处理的Partition中的数据量相比于其他Reduce Task要多很多,那么,如果能够增加Reduce Task的数量,也可以缓解或者基本上解决数据倾斜问题。
将Reduce Task数量增加,就能够减少每个Task处理的数据量,这样的话,数据倾斜问题就不会像之前那么严重了,甚至能够基本解决数据倾斜。
当使用reduceByKey,groupByKey等能够产生Shuffle类算子的时候,可以传进去一个参数,这个参数就代表要创建的Reduce Task的数量。
这种解决方案只起到了对数据倾斜问题的缓解作用,不能真正解决数据倾斜,但至少可以避免OOM。如果在使用这种方案时,Task最终的执行时间和原先相差不大,那么,就不能使用这种方案了。
网友评论