如何从pyspark中删除数据帧来管理内存?

mel*_*lik 3 python memory apache-spark pyspark

我列出了我的数据帧以删除未使用的数据帧。首先,我使用下面的函数来列出我从其中一篇文章中找到的数据帧

from pyspark.sql import DataFrame

def list_dataframes():

    return [k for (k, v) in globals().items() if isinstance(v, DataFrame)] 
Run Code Online (Sandbox Code Playgroud)

然后我尝试从列表中删除未使用的。我在下面使用的代码

df2.unpersist()
Run Code Online (Sandbox Code Playgroud)

当我再次列出时,df2 仍然存在。如何删除数据帧以在 pyspark 上获得一些内存?或者你有其他建议吗?谢谢你。

Sun*_*ugu 7

如果您使用最新或更旧的 spark,您可以使用 df.unpersist() 来实现相同的功能,但旧版本有一个错误,该错误已在最新版本 (2.3.2) 的 spark 中修复,其中不更新存储内存统计信息它可以工作,但它没有更新统计数据,所以我要求您在最新的 spark 上运行它以查看统计数据差异

请参阅以下链接以了解更多信息

不持久()问题

2.3.2 的发行说明

如果有用,请批准答案。