【发布时间】:2019-10-15 14:06:50
【问题描述】:
我对 pyspark 很陌生,我遇到以下错误:Py4JJavaError: An error occurred while calling o517.showString. 我读到这是由于内存不足:Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
所以,我一直在读到这种情况的转机是使用df.persist(),然后再次阅读 persisted df,所以我想知道:
- 给定一个
for循环,我在其中执行一些.join操作,我应该在循环内部还是在循环末尾使用.persist()?例如for col in columns: df_AA = df_AA.join(df_B, df_AA[col] == 'some_value', 'outer').persist() --> or <-- for col in columns: df_AA = df_AA.join(df_B, df_AA[col] == 'some_value', 'outer') df_AA.persist() - 完成后,我应该如何回读?
df_AA.unpersist()?sqlContext.read.some_thing(df_AA)?
我对此真的很陌生,所以请尽量解释清楚。
我正在使用 jupyter-notebooks(anaconda) 的本地机器(8GB 内存)上运行; Windows 7的;爪哇 8;蟒蛇3.7.1; pyspark v2.4.3
【问题讨论】:
标签: python dataframe caching pyspark persist