【问题标题】:SPARK java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodesSPARK java.lang.OutOfMemoryError:没有足够的内存来构建表并将表广播到所有工作节点
【发布时间】:2020-04-14 11:01:46
【问题描述】:

我正在使用 spark 加入从天蓝色存储获取的静态数据集和从 eventthub 获取的流数据集。我没有在任何地方使用广播加入。加入后我尝试了 df.explain() ,它显示正在发生 sortmerge 加入。我不确定为什么会收到与广播哈希连接相关的错误。

java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes. As a workaround, you can either disable broadcast by setting spark.sql.autoBroadcastJoinThreshold to -1 or increase the spark driver memory by setting spark.driver.memory to a higher value
...
...
Exception in thread "spark-listener-group-shared" java.lang.OutOfMemoryError: Java heap space
...
...

spark 是否广播它从事件中心获得的所有内容?

这就是我的程序的样子

//##read stream from event hub

process(stream)

def process(stream: DataFrame){

  val firstDataSet = getFirstDataSet()
  firstDataSet.persist()

  val joined = stream.join(
    firstDataSet,
    stream("joinId") === firstDataSet("joinId")
    )

  //##write joined to event hub
}

def getFirstDataSet(){
  //##read first from azure storage

  val firstDataSet = first.filter(
    condition1 &&
    condition 2
    )
}

更新:看起来像 JVM Out of Memory 错误,与广播无关。 https://issues.apache.org/jira/plugins/servlet/mobile#issue/SPARK-24912

我尝试使用 gceasy.io 在 GC 后检查驱动程序和执行程序堆的使用情况: 执行者看起来不错 GC 后的驱动程序内存消耗看起来不断增加

我分析了堆转储,以下是内存不足期间的前 15 个条目:

看起来 char 数组正在累积在驱动程序中。我不确定是什么导致它累积 char 数组。

【问题讨论】:

标签: apache-spark broadcast spark-structured-streaming azure-eventhub


【解决方案1】:

我今天遇到了这个问题,在分析了堆转储后,我发现这是由于 Spark UI 在内存中保留了很多执行计划:

降低名称中带有retained 的所有设置解决了这个问题。 https://spark.apache.org/docs/latest/configuration.html#spark-ui

或者如果你不需要它,你可以完全禁用 spark ui。

【讨论】:

  • 我认为我们不需要 UI。我会检查的。 char[] 一侧的字符串是存储在 char 数组中的字符串的值吗?能否请您发送我如何查看这些值的步骤?它需要jvm许可吗?我已经使用 jmap 来获取内存转储
  • @NagendraGhimire 我使用VisualVM 加载堆转储并对其进行分析,如我的屏幕截图所示。这是 Oracle 的一个开源项目。
猜你喜欢
  • 2015-05-11
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多