2015-10-26 11 views

Antwort

6

Es ist eigentlich ziemlich einfach. Alles, was innerhalb der durch eine Transformation erzeugten Schließung geschieht, geschieht auf einem Arbeiter. Es bedeutet, wenn etwas innerhalb passiert map(...), filter(...), mapPartitions(...), groupBy*(...), aggregateBy*(...) wird auf den Arbeitern ausgeführt. Es beinhaltet das Lesen von Daten aus einem persistenten Speicher oder aus entfernten Quellen.

Aktionen wie count, , fold(...) werden normalerweise sowohl vom Treiber als auch von den Mitarbeitern ausgeführt. Das schwere Heben wird parallel von den Arbeitern durchgeführt, und einige abschließende Schritte, wie das Reduzieren der von den Arbeitern erhaltenen Leistungen, wird sequentiell beim Fahrer durchgeführt.

Alles andere, wie das Auslösen einer Aktion oder Transformation passiert beim Treiber. Insbesondere bedeutet es jede Aktion, die Zugriff auf SparkContext erfordert. In PySpark bedeutet dies auch eine Kommunikation mit Py4j Gateway.

+0

Ich danke Ihnen! –

1

Alle Schließungen übergeben als Argument zur Methode von JavaRDD/JavaPairRDD/ähnlich und einige Methoden dieser Klassen werden von Spark-Knoten ausgeführt. Alles andere ist Treibercode.