什么是数据倾斜
并行处理数据集的某个task处理的数据明显多于其他task。
发生数据倾斜的原因
一个词概括:shuffle
在Shuffle的过程中,同样一个Key一般都会交给一个Task去处理,如果某个key特别多,如上图中task3的key有80亿,这样就会造成别的task很快算完,而task3却一直在计算中,对于spark来说下游的stage又必须得等上游stage全部计算完成后才能开始计算,这样task3就成了整个任务的性能瓶颈。
通俗理解shuffle
Shuffle过程,简单来说,就是将分布在集群中多个节点上的同一个Key,拉取到同一个节点上,进行聚合或Join等操作。例如,reduceByKey、joi