pyspark Partitionierung von Daten mit partitionby
Ich verstehe, dass partitionBy
Funktion Partitionen meine Daten. Wenn ich rdd.partitionBy(100)
es wird die partition meine Daten durch Schlüssel in 100 Teile. D. H. Daten, die im Zusammenhang mit ähnlichen Tasten gruppiert werden,
- Ist mein Verständnis richtig?
- Ist es ratsam, die Anzahl der Partitionen gleich der Anzahl der
Kerne? Das macht die Bearbeitung effizienter? - was, wenn meine Daten nicht in Schlüssel-Wert-format. Kann ich trotzdem diese Funktion verwenden?
- können sagen, meine Daten sind serial_number_of_student,student_name. In diesem
Fall kann ich die partition meine Daten von student_name, anstatt die
Seriennummer?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine einfache Antwort hier. Alles hängt von Datenmenge und verfügbaren Ressourcen. Zu groß oder zu niedrig ist die Anzahl der Partitionen führen zu einer Beeinträchtigung der Leistung.
Einige Ressourcen behaupten, die Anzahl der Partitionen sollte etwa doppelt so groß wie die Anzahl der verfügbaren Prozessorkerne. Von der anderen Seite eine einzelne partition sollte normalerweise nicht mehr als 128 MB und single-shuffle-block darf nicht größer als 2 GB sind (Siehe SPARK-6235).
Schließlich müssen Sie richtig für die möglichen Daten-skews. Wenn einige Tasten sind überrepräsentiert in Ihr Datensatz es können in der Folge zu suboptimalen Ressourcennutzung und mögliche Fehler.
Nicht, oder zumindest nicht direkt. Sie können
keyBy
Methode zum konvertieren von RDD zu von Ihnen gewünschten format. Außerdem jedes Python-Objekt kann behandelt werden, als Schlüssel-Wert-paar so lange, wie es implementiert die erforderlichen Methoden, die machen es sich Verhalten wie einIterable
von der Länge gleich zwei. Sehen Wie, um zu bestimmen, ob das Objekt ein gültiges Schlüssel-Wert-paar in PySparktuple
von ganzen zahlen ist.Zitieren Python-Glossar:
Ich habe vor kurzem verwendet partitionby. Was ich Tat, war, zu restrukturieren, meine Daten, so dass alle die, die ich wollen, um in derselben partition haben die gleichen Schlüssel, die wiederum einen Wert aus den Daten. meine Daten wurde eine Liste von Wörterbuch, die ich umgewandelt in tupples mit Schlüssel aus dem Wörterbuch.Zunächst die partitionby war nicht zu halten, gleichen Tasten in der gleichen partition. Aber dann erkannte ich die Tasten wurden die Saiten. Ich warf Sie auf int. Aber das problem blieb. Die zahlen waren sehr groß. Ich habe dann zugeordnet, diese zahlen zu kleine numerische Werte, und es funktionierte. Also, mein take-away war, dass die Tasten kleine zahlen.