2016-11-14 2 views

Antwort

2

Wir können RDD beibehalten, um später mehr als eine Aktion oder Aktionsaktion auf RDD anzuwenden. Nach dem Fortbestehen wird der RDD-Funke alle Stufen überspringen, die für die Ausführung der Aktion berechnet werden müssen. Im funke werden alle Transformationen faul ausgewertet, dh wenn Sie action aufrufen, werden alle Transformationen in real ausgeführt. Wenn Sie collect() aufrufen, wird die Transformation ausgeführt und Sie erhalten eine der RDDs, wenn Sie erneut eine Aktion wie count ausführen es wird nicht erneut ausführen alle Transformation nur alle vor überspringen bestehen bleiben und zum Beispiel

val list = sc.parallelize(List(1,23,5,4,3,2)) 
val rdd1 = list.map(_+1) 
val rdd2 = rdd1.map(_+5).cache 
rdd2.collect 
rdd2.count 

wie im obigen Beispiel nicht beibehalten Teil ausgeführt werden, wenn rdd2.collect es alle oben Transformationen ausgeführt werden rufen, wie Sie RDD2 bemerken bereits cache also jetzt, wenn count aufgerufen wird, wird es nicht über der Transformation ausgeführt und verwendet persisted rdd, um Ergebnisse zu berechnen.