我想知道为什么我的火花流工作中有这么多任务编号?它变得越来越大......
3.2小时后'跑步,它长到120020 ......经过一天的运行,它会增长到一百万......为什么?
答案 0 :(得分:2)
此SparkUI
功能意味着某些阶段依赖项可能已经计算过,但是已被跳过,因为它们的输出已经可用。因此它们显示为skipped
。
请不要might
,这意味着在作业完成之前Spark
不确定是否需要返回并重新计算最初跳过的某些阶段。
答案 1 :(得分:1)
流式应用程序的本质是随着时间的推移对每批数据运行相同的过程。看起来你试图以1秒的批处理间隔运行,每个间隔可能产生几个作业。您在3.2小时内显示585个作业,而不是120020.但是,它看起来有点像您的处理完成无处不在1秒。我想你的调度延迟非常高。这是一个批次间隔太小的症状,我猜。
答案 2 :(得分:1)
我强烈建议您检查参数 spark.streaming.blockInterval ,这是一个非常重要的参数。默认情况下为0.5秒,即每0.5秒创建一个任务。
所以也许你可以尝试将 spark.streaming.blockInterval 增加到1分钟或10分钟,然后任务数量应该减少。
我的直觉仅仅是因为你的消费者和生产者一样快,所以随着时间的推移,越来越多的任务被积累以供进一步消费。
这可能是由于您的Spark群集无法处理如此大的批次。它也可能与检查点间隔时间有关,也许您将其设置得太大或太小。它也可能与您的并行,分区或数据位置等设置有关。
祝你好运阅读本文