如何取消缓存数据框?

How to un-cache a dataframe?

我在 Pyspark (Databricks) 中看到奇怪的行为,其中 SQL 查询在新笔记本中 returns 结果,但是当我将 LIMIT 100 应用于 SQL,或 limit(100) 到数据框,我没有得到任何结果(而我希望看到前 100 个)。

在使用相同 SELECT * FROM VIEW_XYZ 操作的 单独 笔记本中,我应用 limit(100) 然后缓存()数据帧。这可能是一个因素?全部单独的笔记本,但相同的 SQL 查询。

我假设 cache() 过分热心地缓存了查询 SELECT * FROM VIEW_XYZ LIMIT 100 及其将近两周前的结果。这是关于这个查询在我的笔记本每小时运行时返回“无”的时间。

为了验证这个假设,我想“取消缓存”query/dataframe。我如何取消缓存?

编辑:将数据库名称添加到视图 dbname.viewname 修复了它。我不知道为什么或如何。

不要认为 cache 与您的问题有任何关系。

要取消缓存所有内容,您可以使用 spark.catalog.clearCache()。或者尝试重新启动集群,cache将数据持久化到集群上,所以如果它重新启动cache将是空的,你可以验证它不是cache 相关问题。

你所有的笔记本可能都连接到同一个集群,这可能会因为一些旧版本的运行时而产生随机错误。

尝试使用最新的运行时创建新集群,具有旧运行时的旧集群有时确实表现得很奇怪。有时 输出过多和命令过多的笔记本 会这样。刚开始使用新的,你可能永远不会遇到任何这样的问题。

一般建议使用 LTS 版本的运行时。 您可以阅读更多相关信息 here