如何取消缓存数据框?
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。
我在 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。