【问题标题】:Spark Structured streaming - java.lang.OutOfMemoryError: Java heap spaceSpark结构化流 - java.lang.OutOfMemoryError:Java堆空间
【发布时间】:2019-12-30 09:30:20
【问题描述】:

在使用 Spark 结构化流处理输入流时出现以下异常。

org.apache.spark.SparkException:作业因阶段失败而中止: 阶段 5.0 中的任务 22 失败 1 次,最近一次失败:丢失任务 阶段 5.0 中的 22.0(TID 403、localhost、执行器驱动程序):java.lang.OutOfMemoryError: Java heap space

我已经处理了下面给出的水印,

    .withWatermark("timestamp", "5 seconds")
        .groupBy(window($"timestamp", "1 second"), $"column")

可能是什么问题?我已尝试将触发器从默认更改为固定间隔,但仍然遇到问题。

【问题讨论】:

    标签: apache-spark apache-spark-sql spark-structured-streaming


    【解决方案1】:

    我认为此问题与水印或触发器无关。 OutOfMemory 出现错误有两个原因:

    1. 内存泄漏。这个编程错误会导致你的应用程序不断消耗更多的内存。每次使用应用程序的泄漏功能时,都会将一些对象留在 Java 堆空间中。随着时间的推移,泄漏的对象会消耗所有可用的 Java 堆空间并触发错误。

    2. 对于指定给它的资源而言,数据过多。你的集群有一个指定的阈值,只能容纳一定数量的数据。当数据量超过该阈值时,在峰值之前正常运行的作业将停止运行并触发java.lang.OutOfMemoryError: Java heap space error

    您的错误也显示task 22.0 in stage 5.0,这意味着它成功完成了第 1 至第 4 阶段。对我来说,这意味着分配给它的资源有太多数据,因为它不会像内存泄漏那样在多次运行中死亡。尝试使用spark.readStream.option("maxFilesPerTrigger", "6") 或增加分配给该集群的内存来限制读取的数据量。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 2015-09-28
      • 2016-03-02
      • 2010-12-08
      相关资源
      最近更新 更多