2016-07-21 2 views
2

私は、私は「今、私は私ができるスパークリストには、すべてのRDD名がキャッシュされ

rddName.unpersist() 

下のコマンドを使用して、そのうちのいくつかをunpersistし​​たいが、それらをキャッシュされた、いくつかのRDDのとデータフレームを作成し、Apacheのスパークに新しいです彼らの名前を覚えていない。 sc.getPersistentRDDsを使用しましたが、出力には名前が含まれていません。また、キャッシュされたrddを表示するためにブラウザを使用しましたが、名前情報は表示されません。何か不足していますか?

+0

eliasah、申し訳ありませんが、私はあなたの答えを受け入れたと思いました。.. – fanbondi

答えて

4

が実際に正しいですが、私は何を探していることはsc.getPersistentRDDsであると考えている:

scala> val rdd1 = sc.makeRDD(1 to 100) 
# rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:27 

scala> val rdd2 = sc.makeRDD(10 to 1000) 
# rdd2: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[1] at makeRDD at <console>:27 

scala> rdd2.cache.setName("rdd_2") 
# res0: rdd2.type = rdd_2 ParallelCollectionRDD[1] at makeRDD at <console>:27 

scala> sc.getPersistentRDDs 
# res1: scala.collection.Map[Int,org.apache.spark.rdd.RDD[_]] = Map(1 -> rdd_2 ParallelCollectionRDD[1] at makeRDD at <console>:27) 

scala> rdd1.cache.setName("foo") 
# res2: rdd1.type = foo ParallelCollectionRDD[0] at makeRDD at <console>:27 

scala> sc.getPersistentRDDs 
# res3: scala.collection.Map[Int,org.apache.spark.rdd.RDD[_]] = Map(1 -> rdd_2 ParallelCollectionRDD[1] at makeRDD at <console>:27, 0 -> foo ParallelCollectionRDD[0] at makeRDD at <console>:27) 

今度は、別のRDDを追加し、同様にそれを名前を付けてみましょう:

scala> rdd3.setName("bar") 
# res4: rdd3.type = bar ParallelCollectionRDD[2] at makeRDD at <console>:27 

scala> sc.getPersistentRDDs 
# res5: scala.collection.Map[Int,org.apache.spark.rdd.RDD[_]] = Map(1 -> rdd_2 ParallelCollectionRDD[1] at makeRDD at <console>:27, 0 -> foo ParallelCollectionRDD[0] at makeRDD at <console>:27) 

を私たちは、実際に気づいそれは永続化されません。

0

rrdName変数には特別な意味はありません。これは単なるRDDへの言及です。例えば、以下のコードで

val rrdName: RDD[Something] 
val name2 = rrdName 

name2rrdNameが同じRDDを指す2つの参照です。 name2.unpersistを呼び出すことは、rrdName.unpersistを呼び出すことと同じです。

unpersist RDDにする場合は、手動で参照を保持する必要があります。 Dikeiの答え@

2

PySparkers:ジャワに浸漬することによって、あなたのRDDS unpersist getPersistentRDDs isn't yet implemented in Python、そう:

for (id, rdd) in spark.sparkContext._jsc.getPersistentRDDs().items(): 
    rdd.unpersist() 
関連する問題