使用df.cache()后是否必须使用df.unpersist()?

时间:2018-05-23 09:28:39

标签: scala apache-spark apache-spark-sql

在使用df.unpersist()释放缓存后,是否必须使用df.cache()? 如果我将我的DataFrame存储在缓存中而没有不存在,那么代码运行得非常快。但是,使用df.unpersist()时需要相当长的时间。

1 个答案:

答案 0 :(得分:2)

它不是强制性,但是如果您需要长时间运行并且想要释放不再需要的资源,则强烈建议您这样做。无论如何,Spark会以LRU为基础为您管理这些内容;引自the docs

  

Spark会自动监控每个节点上的缓存使用情况,并以最近最少使用(LRU)的方式删除旧数据分区。

unpersist方法does this by default,但请考虑通过使用unpersist参数调用它来异步显式blocking = false

df.unpersist(false) // unpersists the Dataframe without blocking

对于Spark 2.3.0,unpersist方法记录为here