每当我在RDD上执行groupByKey
时,它就会分成200个作业,即使原始表非常大,例如2k分区和数千万行。
此外,操作似乎停留在最后两个需要很长时间才能计算的任务上。
为什么是200?如何增加它会有帮助吗?
答案 0 :(得分:6)
此设置来自spark.sql.shuffle.partitions
,这是分组时使用的分区数,并且具有default setting of 200,但可以增加。这可能有所帮助,它将取决于集群和数据。
最后两个任务花费很长时间是由于数据偏斜,这些键包含更多的值。您可以使用reduceByKey
/ combineByKey
而非groupByKey
,还是以不同的方式并行化问题?