将展开内存转移到存储内存失败

时间:2018-11-14 18:00:26

标签: apache-spark pyspark

我正在获取带有spark的java.lang.AssertionError。该错误并不能真正解释是什么导致了此错误(至少对我而言)。 任何有关导致此错误的原因以及解决此问题的步骤的帮助都将是有帮助的。

enter image description here

1 个答案:

答案 0 :(得分:2)

Spark必须先对数据进行反序列化处理,然后才能被应用程序使用,并且将反序列化的数据称为“展开内存”。在您的情况下,您的执行器上可能缺少足够的RAM,无法容纳完全反序列化的数据。从源代码:

存储失败的原因有两个:首先,该块已部分展开;其次,该块已展开。其次,该块已完全展开,并且实际存储的数据大小大于保留的大小,但是我们无法请求额外的内存

https://github.com/apache/spark/blob/9628aca68ba0821b8f3fa934ed4872cabb2a5d7d/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala#L260