首页 > 解决方案 > 如何取消在另一个数据帧之上创建的缓存数据帧

问题描述

如何取消在另一个数据帧之上创建的缓存数据帧

我已经从父 df 创建了多个数据框,在代码的末尾,我在完成所有转换后创建了一个最终的 df,它将包含大约 1000 亿条记录,并且之前的 df 也将处理相同的数量数据的。因此,我决定在创建最终的 df 并准备写入镶木地板文件后释放所有 df。

有人可以帮助我如何在将最终 df 保存到 hdfs 中的镶木地板文件之前释放未使用的 df,我希望这将释放内存空间并有助于更快地将最终 df 写入镶木地板文件

标签: apache-sparkapache-spark-sql

解决方案


如果您使用 缓存数据帧df.cache(),则可以df.unpersist()从内存中删除该数据帧。如果你已经覆盖了变量df,那么你就不能取消持久化它,因为引用丢失了。

还有一种从缓存中清除所有内容的最终方法,即spark.catalog.clearCache(),但这可能不是您想要的,因为您想保留最终结果数据帧。

重要的是不要覆盖与缓存数据帧相对应的任何变量,以便保留对该数据帧的引用。


推荐阅读