【发布时间】:2018-06-04 08:25:11
【问题描述】:
这是对我之前的one 的后续查询:根据建议,我得到了逐行百分比更改,并且由于 df_diff 数据帧 (df) 中的第一行都是空值,所以我做了:
df_diff = df_diff.dropna()
df_diff.count()
第二条语句抛出以下错误:
Py4JJavaError: An error occurred while calling o1844.count.
: java.lang.OutOfMemoryError: Java heap space
当我在上一篇文章中发布的玩具 df 上尝试上述代码时,它可以正常工作,但是对于我的实际数据帧(834 行,51 列),会发生上述错误。任何关于为什么会发生这种情况以及如何处理它的指导将不胜感激。谢谢
编辑:
在我的 834 X 51 的实际数据框 (df) 中,第一列是日期,其余列是我试图获取每日百分比变化的 50 只股票的收盘价。按日期 col 对窗口进行分区与 pyspark 中此 df 中的先前错误没有区别,并且似乎没有任何其他自然候选者可以分区。
唯一可行的方法是在 spark-shell 中执行此操作。在没有分区的情况下,我收到了警告消息...
WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.
...直到我在数据帧上调用了 cache() 但这对于大 df 来说并不理想
【问题讨论】: