【问题标题】:How to un-cache a dataframe?如何取消缓存数据帧?
【发布时间】:2021-03-10 18:05:06
【问题描述】:

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

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

我假设cache() 过度缓存了查询SELECT * FROM VIEW_XYZ LIMIT 100 及其近两周前的结果。当我的笔记本每小时运行时,这就是该查询返回“无”的时间。

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

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

【问题讨论】:

    标签: pyspark apache-spark-sql rdd databricks


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2015-11-20
      • 1970-01-01
      相关资源
      最近更新 更多