2017-05-04 1 views
0

Ich frage mich, ob wir die folgenden Anweisungen:Ist ein gefiltertes RDD noch im Cache, wenn sie auf einem im Cache gespeicherten RDD ausgeführt

val rdd : = sc.textFile("myfile").zipwithIndex.cache 
val size = rdd.count 
val filter = rdd.filter(_._2 % 2 == 0) 
val sizeF = filter.count 

Die Aktion auf dem Filter durchgeführt RDD ist auszuführen, als ob es im Cache oder nicht? Trotz der Tatsache, dass wir eine zweite RDD von der ersten erstellen, kamen die Informationen von der gleichen Stelle, also frage ich mich, ob sie in ein neues Objekt kopiert wird, das zwischengespeichert werden muss oder ob das gefilterte Objekt direkt mit seiner übergeordneten verknüpft ist schnellere Aktionen ermöglichen? Keine

Antwort

2

Seit filter ist eine Transformation und keine Aktion, und da Funke ist faul wurde nichts tatsächlich in der folgenden Zeile getan:

val filter = rdd.filter(_._2 % 2 == 0) 

Die folgende Zeile:

val sizeF = filter.count 

Verwendet die zwischengespeicherte() rdd, und führt die filter Transformation gefolgt von der count Aktion

Daher gibt es nichts zu cache in der filter Transformation.

Spark Guide

Transformations

der folgenden Tabelle sind einige der häufigsten Transformationen listet Spark unterstützt. Weitere Informationen finden Sie im RDD-API-Dokument (Scala, Java, Python, R) und dem RDD-Funktionenpaar (Scala, Java).

filter (func) Gibt einen neuen Datensatz zurück, der durch Auswahl der Elemente der Quelle gebildet wurde, für die func den Wert true zurückgibt.

Hinweis. Wenn filter eine Aktion war und eine neue RDD erstellt wurde, wäre es nicht cached, nur die RDDs, auf denen die cache()-Operation ausgeführt wurde, sind cached.

0

,

Das Kind RDD nicht cahced werden, der Cache wird die ursprüngliche RDD in Ihren Mitarbeitern und die anderen Daten mantain wird nicht zwischengespeichert werden.

Wenn Sie für diesen gefilterten RDD anderen Schritt anfordern, der die Daten nicht ändert, wird die Antwort aufgrund von Spark immer schnell sein. Bewahren Sie die Spark-Dateien in Arbeitern auf, bis eine echte Änderung eintritt.

Verwandte Themen