有一种方法可以在作业中止时让Spark Streaming Application退出

时间:2019-07-20 08:07:01

标签: apache-spark

我已向Spark提交了Spark Streaming应用程序。 当一项作业执行失败时。以下作业将继续执行。 当一个作业执行失败时,有没有办法退出整个应用程序?

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

1 个答案:

答案 0 :(得分:0)

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

然后,您可以从负责失败的代码中引发异常,并将其冒泡到主驱动程序/驱动程序,将其围绕在try catch中的主体周围,并且可以从catch内部调用ssc.stop(true,true)。 / p>

另一种方法是-在catch代码块的内部包装负责失败的代码,在持久性存储(hdfs或s3或与之相关的任何火花)中创建标记文件,并从驱动程序中进行检查-每当存在标记文件时将其删除以及调用ssc.stop(true,true)。

可以在以下位置找到示例 https://github.com/lanjiang/streamingstopgraceful/blob/master/src/main/scala/com/cloudera/ps/GracefulShutdownExample.scala