如何解冻RDD?

时间:2014-09-19 16:35:19

标签: scala apache-spark

我使用cache()将数据缓存到内存中但我意识到要看到没有缓存数据的性能我需要将其解除以从内存中删除数据:

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

但是我得到了错误说:

  

值uncache不是org.apache.spark.rdd.RDD [(Int,Array [Float])]

的成员

我当时不知道如何做这个快照!

4 个答案:

答案 0 :(得分:47)

使用unpersist()

,RDD可以未缓存
rdd.unpersist()

source

答案 1 :(得分:11)

uncache功能不存在。我认为你在寻找unpersist。根据Spark ScalaDoc将RDD标记为非持久性,并从内存和磁盘中删除所有块。

答案 2 :(得分:3)

如果使用.cache()将源数据缓存在RDD中 或者你宣布了小记忆。 或者使用默认内存,对我来说大约500 MB。 并且你一次又一次地运行代码,

然后发生此错误。 尝试清除代码末尾的所有RDD,因此每次代码运行时,都会创建RDD_Name.unpersist()并从内存中清除。

使用:int64_t foo(int64_t a, int64_t b, int64_t c){ return a == b ? c : a == c ? b : a; }

执行此操作

答案 3 :(得分:2)

如果要删除所有缓存的RDD,请使用此::

for ((k,v) <- sc.getPersistentRDDs) {
  v.unpersist()
}