【发布时间】:2019-03-17 11:59:42
【问题描述】:
我们有一个使用 mapGroupWithState 的 Spark 结构化流。经过一段时间的稳定处理后,每个小批量突然开始需要 40 秒。可疑的是,每次看起来正好是 40 秒。在此之前,批次只需要不到一秒钟的时间。
查看特定任务的详细信息,大多数分区的处理速度非常快,但有些则需要 40 秒:
GC 看起来不错,因为数据正在快速处理,但突然完整的 GC 等停止(与 40 秒问题同时):
在发生此问题时,我已从其中一个执行程序中获取线程转储,但我看不到它们被阻止的任何资源:
我们是否遇到了 GC 问题,为什么会以这种方式表现出来?是否有其他资源被阻塞,它是什么?
【问题讨论】:
-
请进行堆转储,看看您是否遇到了 SPARK-23682。如果您遇到同样的问题,Spark 2.4.0 将解决此问题。
-
嗨@Jungtaek - 你在邮件列表中给出了相同的答案。你是对的,在 2.4 中对我们来说似乎是固定的。我们想再测试一下,我也会回复邮件列表。
-
啊,是的,我不记得我在邮件列表中回答的所有内容了。我希望官方 Spark 2.4 可以解决您的问题。
标签: apache-spark garbage-collection spark-structured-streaming