微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何取消缓存数据帧?

如何解决如何取消缓存数据帧?

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

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

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

为了测试这个假设,我想“取消缓存”查询/数据帧。如何取消缓存?

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

enter image description here

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。