neu partitionieren() ist nicht auf RDD-partition Größe
Ich versuche, ändern Sie die Größe der partition einer RDD mit repartition () - Methode. Der Aufruf der Methode auf dem RDD gelingt, aber wenn ich explizit überprüfen Sie die Größe der partition mit partition.size-Eigenschaft des RDD, bekomme ich wieder die gleiche Anzahl von Partitionen, die es ursprünglich hatte:-
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
In dieser Phase, in der ich einige Aktion durchzuführen, wie rdd.nehmen Sie(1) einfach nur zu zwingen, Bewertung, nur für den Fall, falls jene Gegenstände. Und dann habe ich wieder überprüfen Sie die Größe der partition:-
scala> rdd.partitions.size
res58: Int = 50
Wie man sehen kann, es ist nicht zu ändern. Kann mir jemand beantworten, warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ist es wichtig, dass Sie eine Aktion ausführen, wie
repartition
ist in der Tat faul. Zweitensrepartition
gibt ein neuesRDD
mit der Partitionierung geändert, so müssen Sie die zurückgegebenenRDD
oder sonst Sie arbeiten immer noch aus der alten Partitionierung. Schließlich, wenn Sie schrumpfen Ihre Partitionen, die Sie verwenden solltencoalesce
, als dass nicht mische die Daten. Es wird stattdessen halten die Daten auf die Anzahl der Knoten und ziehen Sie in den verbleibenden Waisen.