【发布时间】:2019-08-14 05:43:04
【问题描述】:
我使用 pyspark 使用大小为 4GB 的输入文本文件创建 Spark Dataframe。然后使用一些条件,例如:
df.cache() #cache df for fast execution of later instruction
df_pd = df.where(df.column1=='some_value').toPandas() #around 70% of data
现在我正在对 pandas Dataframe df_pd 进行所有操作。现在我的内存使用量大约为 13 GB。
- 为什么,消耗了这么多内存?
- 如何才能使我的计算更快更高效? #here df.cache() 导致缓存需要 10 分钟。
- 我尝试使用 df.unpersist() 和 sqlContext.clearCache() 来释放 pyspark DF 内存,但没有帮助。
注意:我主要使用 Pyspark,因为它有效地使用了 cpu 内核,而 pandas 只使用我机器的单核进行读取文件操作。
【问题讨论】:
-
您在调用
.toPandas()后是否尝试过使用del df。在此处查看详细答案stackoverflow.com/a/39967109/455814 -
是的,我试过了,它没有释放内存。
标签: pandas apache-spark pyspark