2014-12-04 10 views
6

Warum speichert der Funke Zwischendaten während des Mischens auf der Festplatte? Ich versuche zu verstehen, warum es nicht in Erinnerung bleiben kann. Was sind die Herausforderungen in Erinnerung zu schreiben?Warum speichert Spark shuffle Zwischendaten auf der Festplatte?

Ist etwas Arbeit getan, um es in den Speicher zu schreiben?

+0

Sie können "spark.shuffle.spill" auf false setzen, um Zwischendaten in den Speicher zu schreiben. – Amos

+0

Warum ist dies keine Standardoption? –

Antwort

4

Spark speichert Zwischendaten auf der Festplatte von einem Shuffle-Vorgang als Teil seiner Optimierung "unter der Haube". Wenn Spark einen Teil eines RDD-Graphen neu berechnen muss, kann er möglicherweise die Herkunft eines RDD-Graphen abschneiden, wenn der RDD bereits als Nebeneffekt eines früheren Shuffle vorliegt. Dies kann auch dann passieren, wenn die RDD nicht zwischengespeichert oder explizit beibehalten wurde.

Die Quelle dieser Antwort ist das O'Reilly-Buch Learning Spark von Karau, Konwinski, Wendell & Zaharia. Kapitel 8: Tuning und Debugging von Spark. Abschnitt: Komponenten der Ausführung: Jobs, Aufgaben und Phasen.