首页 > 解决方案 > 使用 df.cache() 后是否必须使用 df.unpersist()?

问题描述

使用释放缓存df.unpersist()后是否强制使用?df.cache()如果我将我的 DataFrame 存储在缓存中而不持久化,那么代码运行得非常快。但是,当我使用df.unpersist().

标签: scalaapache-sparkapache-spark-sql

解决方案


这不是强制性的,但是如果您有很长的路要走,并且想要释放不再需要的资源,强烈建议您这样做。Spark 将在 LRU 的基础上为您管理这些;引用文档

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

unpersist方法默认执行此操作,但请考虑您可以通过使用 a参数显式unpersist异步调用它。blocking = false

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

unpersist方法在此处为 Spark 2.3.0 记录。


推荐阅读