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