Apache spark 有没有办法让Spark Streaming应用程序在作业中止时退出

Apache spark 有没有办法让Spark Streaming应用程序在作业中止时退出,apache-spark,Apache Spark,我已经向纱线提交了火花流应用程序。 当一个作业执行失败时。以下作业将继续执行。 当一个作业执行失败时,是否有办法退出整个应用程序 在我的例子中,数据应该按顺序处理,我们不应该跳过任何数据。如果发现任何错误,我们需要停止应用程序并进行故障排除,而不是继续。首先,我们必须确保spark streaming正常停止,以便将spark.streaming.stopGracefullyOnShutdown参数设置为true(默认值为false) 然后,您可以从负责故障的代码中抛出异常,并将其冒泡到主/驱动

我已经向纱线提交了火花流应用程序。 当一个作业执行失败时。以下作业将继续执行。 当一个作业执行失败时,是否有办法退出整个应用程序


在我的例子中,数据应该按顺序处理,我们不应该跳过任何数据。如果发现任何错误,我们需要停止应用程序并进行故障排除,而不是继续。

首先,我们必须确保spark streaming正常停止,以便将spark.streaming.stopGracefullyOnShutdown参数设置为true(默认值为false)

然后,您可以从负责故障的代码中抛出异常,并将其冒泡到主/驱动程序,在try catch中包围主体,并从catch内部调用ssc.stop(true,true)

另一种方法是——从内部catch块包装负责故障的代码,在持久性存储(hdfs或s3或与spark相关的任何东西)中创建一个标记文件,并从驱动程序中不断检查该标记文件——只要存在标记文件,就将其删除,并调用ssc.stop(true,true)

一个例子可以在

非常感谢,我们无法将异常抛出给驱动程序,因为异常在executor上。我相信第二种方法可以解决这个问题。目前,我们的解决方案扩展了StreamingListener,当新批启动时,它将检查是否已经有另一个活动批正在运行,如果另一个活动批正在运行,则流式侦听器将通知停止。顺便说一句,是否有任何文件描述,即使某些作业失败,火花仍将继续。甚至这似乎是一种正常的感觉,但我找不到任何关于它的官方文件。你是否在寻找一份文件,告诉你即使在某些工作失败的情况下,这种火花仍会继续存在?是的。我正在使用,发现当一个作业失败(RDD中抛出异常)时,另一个作业以新的偏移量开始。而失败的作业仍在Spark UI上显示为正在处理。在这种情况下,我也无法理解为什么Spark UI将失败的作业显示为处理?