Gibt es eine Möglichkeit, die aktuelle Anzahl der Partitionen eines DataFrame abzurufen? Ich habe das DataFrame-Javadoc (Spark 1.6) überprüft und keine Methode dafür gefunden, oder habe ich es einfach verpasst? (Im Fall von JavaRDD gibt es eine getNumPartitions () -Methode.)
74
DF
aufRDD
?dataframe.rdd.partitions.size
ist eine andere Alternative nebendf.rdd.getNumPartitions()
oderdf.rdd.length
.Lassen Sie mich dies anhand eines vollständigen Beispiels erklären ...
Um zu beweisen, wie viele Partitionen wir oben haben ... speichern Sie diesen Datenrahmen als CSV
So werden die Daten auf den verschiedenen Partitionen getrennt.
Update:
Kurze Antwort: Hängt von Fällen ab, in denen Sie ausführen. seit ich local [4] verwendet habe, habe ich 4 Partitionen bekommen.
Lange Antwort :
Ich habe das obige Programm auf meinem lokalen Computer ausgeführt und Master als lokales [4] verwendet, basierend darauf, dass es als 4 Partitionen verwendet wurde.
Wenn seine Funkenschale aus Mastergarn besteht, habe ich die Anzahl der Partitionen als 2 erhalten
Beispiel:
spark-shell --master yarn
und tippte dieselben Befehle erneut ein--master local
und basierend auf IhremRuntime.getRuntime.availableProcessors()
dh ausgeführt werdenlocal[Runtime.getRuntime.availableProcessors()]
, wird versucht, diese Anzahl von Partitionen zuzuweisen. Wenn Ihre verfügbare Anzahl von Prozessoren 12 ist (dhlocal[Runtime.getRuntime.availableProcessors()])
Sie eine Liste von 1 bis 10 haben, werden nur 10 Partitionen erstellt.Unter Berücksichtigung all dieser Hinweise würde ich Ihnen empfehlen, es selbst zu versuchen
quelle
In RDD konvertieren und dann die Partitionslänge abrufen
quelle
quelle
Ein weiterer interessanter Weg, um die Anzahl der Partitionen zu ermitteln, ist die Transformation "MapPartitions verwenden". Beispielcode -
Spark-Experten können sich gerne zu seiner Leistung äußern.
quelle