2014-09-19 4 views
22

I verwendet cache() die Daten im Speicher zwischengespeichert werden, aber ich erkennen die Leistung ohne Cache gespeicherten Daten ich es uncache müssen zu sehen, Daten aus dem Speicher zu entfernen:Wie kann man RDD aus dem Cache nehmen?

rdd.cache(); 
//doing some computation 
... 
rdd.uncache() 

aber ich habe den Fehler, sagte:

Wert uncache ist kein Mitglied von org.apache.spark.rdd.RDD [(Int, Array [Float])]

ich weiß nicht, wie die uncache dann zu tun!

Antwort

43

Versuchen Sie, unpersist() (source) zu verwenden.

+0

Thank you so viel @ Josh – Rubbic

11

Die Uncache-Funktion existiert nicht. Ich glaube, du hast nach Unpersisten gesucht. Welche nach dem Spark ScalaDoc die RDD als nicht persistent markieren, und entfernen Sie alle Blöcke für den Speicher und die Festplatte.

+0

Dank Sie richtig sind. Ich habe versucht, was Josh gesagt hat und es scheint, dass es funktioniert! – Rubbic

+0

Es ist in Ordnung. Es ist genau die gleiche Antwort. ;) – eliasah

+3

Es wäre sehr nützlich, die Antworten zusammenzuführen und zu entfernen. Was denken Sie? –

3

Wenn Sie die Quelldaten in einem RDD unter Verwendung .cache() zwischenspeichern oder Sie haben einen kleinen Speicher deklariert. oder der Standardspeicher wird verwendet und es ist ungefähr 500 MB für mich. und Sie führen den Code immer wieder,

Dann tritt dieser Fehler auf. Versuchen Sie, alle am Ende des Codes zu löschen. Daher wird jedes Mal, wenn der Code ausgeführt wird, die erstellt und auch aus dem Speicher gelöscht.

dies durch Verwendung von: RDD_Name.unpersist()