4
我试图使用重新分区()方法更改RDD的分区大小。在RDD的方法调用成功,但是当我明确检查使用RDD的partition.size财产的分区大小,我回来了相同数目的分区,它原本有: -重新分区()不影响RDD分区大小
scala> rdd.partitions.size
res56: Int = 50
scala> rdd.repartition(10)
res57: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[19] at repartition at <console>:27
在这个阶段我像rdd.take(1)一样采取行动来强制评估,以防万一。然后我再次检查分区大小: -
scala> rdd.partitions.size
res58: Int = 50
正如人们所看到的,它没有改变。有人可以回答原因吗?
谢谢,明白了。但是,当使用合并来缩小分区时,我们怎么能说重新洗牌不会发生?因为当我们缩小分区时,删除的分区上的数据必须放在剩余分区的某个地方,这不是重新洗牌吗?或者那正是你所说的“拉进剩下的孤儿”? – Dhiraj
这更多的是措辞的技术性。数据被移动,但没有洗牌,这是一个随机洗牌通常是最重要的性能密集型。此外,如果这解决了您的问题,请不要忘记将其标记为答案:) –