为什么 mapPartitionsWithIndex 会导致 Spark 随机播放?

Why mapPartitionsWithIndex cause a shuffle in Spark?

我是 Spark 的新手。我正在检查测试应用程序中的洗牌问题,但我不知道为什么在我的程序中 mapPartitionsWithIndex 方法会导致洗牌!正如你在图片中看到的,我的初始 RDD 有两个 16MB 的分区,Shuffle 写入大约 49.8MB。 我知道 mapmapPartitionmapPartitionsWithIndex 不是像 groupByKey 那样的洗牌转换,但我看到它们也会导致 Spark 中的洗牌。为什么?

我认为您在 mapPartitionsWithIndex 之后执行了一些 join/group 操作,这导致了随机播放。

您可以通过修改您的代码来建立它。

当前代码

val rdd = inputRDD1.mapPartitionsWithIndex(....)
val outRDD = rdd.join(inputRDD2)

修改后的代码

val rdd = inputRDD1.mapPartitionsWithIndex(....)
println(rdd.count)