2016-07-21 3 views
2

내가, 내가 '지금은 내가 할 수있는스파크 목록은 모든 RDD 이름을 캐시

rddName.unpersist() 

아래의 명령을 사용하여 그 중 일부를 unpersist하고 싶지만,이를 캐시, 여러 RDD의 및 DataFrames를 만들어 아파치 스파크에 새로운 오전 그들의 이름을 기억하지 마라. sc.getPersistentRDDs을 사용했지만 출력에 이름이 포함되어 있지 않습니다. 캐시 된 rdd를 보려면 브라우저를 사용했지만 이름 정보는 다시 표시하지 않았습니다. 내가 놓친 게 있니?

+0

eliasah은, 미안 해요, 난 당신의 대답을 수락 한 생각 .. – fanbondi

답변

4

Dikei의 대답은 실제로는 정확하지만 난 당신을 위해 무엇을 찾고있는 것은 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를 가리키는 두 개의 참조입니다. name2.unpersist을 호출하는 것은 rrdName.unpersist을 호출하는 것과 같습니다.

unpersist을 RDD로 사용하려면 수동으로 참조를 유지해야합니다.

관련 문제