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
這更多的是措辭的技術性。數據被移動,但沒有洗牌,這是一個隨機洗牌通常是最重要的性能密集型。此外,如果這解決了您的問題,請不要忘記將其標記爲答案:) –