Wird rdd1.join(rdd2)
dazu führen, dass ein Shuffle auftritt, wenn rdd1
und den gleichen Partitionierer haben?Führt ein Join von gemeinsam partitionierten RDDs zu einem Shuffle in Apache Spark?
Antwort
Nein. Wenn zwei RDDs den gleichen Partitionierer haben, verursacht join
keinen Shuffle. Sie können dies in CoGroupedRDD.scala
sehen:
override def getDependencies: Seq[Dependency[_]] = {
rdds.map { rdd: RDD[_ <: Product2[K, _]] =>
if (rdd.partitioner == Some(part)) {
logDebug("Adding one-to-one dependency with " + rdd)
new OneToOneDependency(rdd)
} else {
logDebug("Adding shuffle dependency with " + rdd)
new ShuffleDependency[K, Any, CoGroupCombiner](rdd, part, serializer)
}
}
}
ist jedoch zu beachten, dass das Fehlen eines Shuffle bedeutet nicht, dass keine Daten zwischen den Knoten bewegt werden müssen. Es ist möglich, dass zwei RDDs den gleichen Partitionierer haben (co-partitioniert), aber die entsprechenden Partitionen auf verschiedenen Knoten (nicht gemeinsam) liegen.
Diese Situation ist immer noch besser als ein Shuffle, aber es ist etwas zu beachten. Co-location kann die Leistung verbessern, ist jedoch schwer zu garantieren.
Nochmals vielen Dank, ich im Grunde unstand und ich werde den Quellcode lesen, um mehr zu bekommen. – zwb
Folgefrage: Gibt es Spark SQL-Implementierungen (einschließlich separater Projekte, die nicht in der Hauptdistribution enthalten sind), die die gemeinsame Partitionierung nutzen? – javadba
@javadba: Es ist wahrscheinlich wert, in einer separaten Frage zu fragen. http://spark.apache.org/docs/latest/sql-programming-guide.html sagt über 'spark.sql.shuffle.partitions', dass es die Anzahl der Partitionen konfiguriert, die beim Mischen von Daten für Joins oder Aggregationen verwendet werden sollen . "Das ist also ein gutes Zeichen. –
- 1. Apache Spark RDD-Filter in zwei RDDs
- 2. Wie shuffle spill in Apache Spark-Anwendung zu optimieren
- 3. Scalaz-Typklassen für Apache Spark-RDDs
- 4. Wird Tachyon standardmäßig von den RDDs in Apache Spark implementiert?
- 5. PySpark beitreten schlurft Co-partitioniert RDDs
- 6. Wie wiederhole ich RDDs in Apache Spark (Scala)
- 7. Umgang mit RDDs an einen bestimmten Mitarbeiter in Apache Spark
- 8. Wie RDDs in Spark Shell?
- 9. Spark RDDs - wie funktionieren sie?
- 10. Fusion Spark RDDs von schlechten JSON
- 11. Shuffle-Methode führt zu einem sich wiederholenden Muster?
- 12. Matrix Multiplikation in Apache Spark
- 13. Verketten von Datensätzen verschiedener RDDs in Apache Spark mit Hilfe von Scala
- 14. Spark - Shuffle Read Blocked Time
- 15. Spark Cartesian verursacht keine Shuffle?
- 16. Durchführen von Berechnungen mit zwei RDDs in Spark-
- 17. Wie zwei RDDs in Spark mit Python verbinden?
- 18. Der effizienteste Weg zu LIMIT führt zu einem JOIN?
- 19. Apache Spark: Kaufabsicht in einem Satz erkennen
- 20. Berechnung der Canberra-Distanz mit Apache Spark
- 21. Erhöhen Sie den Netzwerkverkehr zwischen Arbeiterknoten durch den Shuffle-Prozess von Apache Spark
- 22. Wie kann man die queueStream API in apache spark verstehen?
- 23. Hive liest keine von Spark generierten partitionierten Parkettdateien.
- 24. Vergleichen von zwei RDDs
- 25. Shuffle ein Array in PHP nicht wirklich Shuffle Array
- 26. Das Ändern der Spark-Dataframe-Spaltentypen führt zu einem Fehler
- 27. Möglichkeiten zum Ersetzen von GroupByKey in Apache Spark
- 28. Welche Funktion in Spark verwendet wird, um zwei RDDs durch Tasten zu kombinieren
- 29. Spark 1.5.2 Shuffle/Serialization - nicht genug Speicher
- 30. Filter in Apache Spark nicht
Können Sie diese Frage umschreiben, um klarer zu sein? Nur weil RDDs Partitionen auf denselben Rechnern haben, heißt das nicht, dass sich alle Schlüssel immer auf derselben Partition befinden. Was fragst du dann? –
Ich habe die Frage komplett umgeschrieben. Ich denke, es macht jetzt Sinn, aber ich bin mir nicht sicher, ob @zwb das meinte. Ich habe das Original nicht wirklich verstanden. Fühlen Sie sich frei, meine Bearbeitung wiederherzustellen und die Frage gegebenenfalls zu aktualisieren. –
Danke, ich komme aus China und mein Englisch ist arm, ich kann mich nicht sehr klar ausdrücken und was du umgeschrieben hast, ist mein Sinn. – zwb