2014-09-19 80 views
22

我用cache()缓存在内存中的数据,但我意识到,看不缓存数据的表现,我需要非缓存它从内存中清除数据:如何uncache RDD?

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

,但我得到的错误说:

值非缓存不是org.apache.spark.rdd.RDD的成员[(智力,数组[浮点型])

我不知道该怎么办的非缓存呢!

回答

43

尝试使用unpersist()source)。

+0

谢谢你这么多@Josh – Rubbic 2014-09-19 16:55:17

11

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

+0

感谢你是对的。我尝试了乔什所说的话,它似乎在工作! – Rubbic 2014-09-19 16:54:59

+0

没关系。这是完全一样的答案。 ;) – eliasah 2014-09-19 16:55:45

+3

合并答案和删除答案会非常有用。你怎么看? – 2014-09-20 23:43:07

3

如果使用.cache() 缓存在RDD源数据或者你已经宣布小内存。 或使用默认内存,对我而言,它的内存大小约为500 MB。 并且您正在一次又一次地运行代码,

然后发生此错误。 尝试在代码结束时清除所有RDD,因此每次代码运行时,都会创建RDD并从内存中清除。

通过这样做:RDD_Name.unpersist()