2014-09-19 25 views
22

Ben bellekte veriyi önbelleğe cache() kullanılan ama bellekten verileri kaldırmak için Önbellekten gerekir önbelleğe alınan veriler olmadan performansını görmek için gerçekleştirilen:RDD'nin önbelleği nasıl kaldırılır?

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

ama got hata ki:

değer Önbellekten org.apache.spark.rdd.RDD üyesi [(Int, Array [Float])] değil

sonra Önbellekten Kaldır nasıl bilmiyorum!

cevap

43

unpersist() (source) 'ı kullanmayı deneyin.

+0

RDD_Name.unpersist() haklısın seni çok @Josh – Rubbic

11

Önbellek işlevi mevcut değil. Bence dağınık değil. Spark ScalaDoc uyarınca, RDD'yi kalıcı olmayan olarak işaretleyin ve bunun için tüm blokları bellek ve diskten kaldırın.

+0

Teşekkür ederiz. Josh'un dediği şeyi denedim ve işe yaramış gibi görünüyor! – Rubbic

+0

Sorun değil. Tam olarak aynı cevap. ;) – eliasah

+3

Cevapları birleştirmek ve birini kaldırmak oldukça yararlı olur. Ne düşünüyorsun? –

3

Kaynak verilerini RDD numaralı telefondan .cache() kullanarak önbelleğe alırsanız veya küçük bellek bildirmişseniz. veya varsayılan bellek kullanılır ve benim için yaklaşık 500 MB. ve kodu yeniden çalıştırıyorsunuz,

Ardından bu hata oluşur. Kodun sonunda tüm RDD temizlemeye çalışın, böylece kod her çalıştırıldığında, RDD oluşturulur ve ayrıca bellekten temizlenir.

kullanarak yapın: