我已向Spark提交了Spark Streaming应用程序。 当一项作业执行失败时。以下作业将继续执行。 当一个作业执行失败时,有没有办法退出整个应用程序?
就我而言,数据应按顺序处理,我们不应跳过任何数据。如果发现任何错误,则需要停止应用程序并进行故障排除,而不是继续。
答案 0 :(得分:0)
首先,我们必须确保火花流正常停止,因为将spark.streaming.stopGracefullyOnShutdown参数设置为true(默认为false)
然后,您可以从负责失败的代码中引发异常,并将其冒泡到主驱动程序/驱动程序,将其围绕在try catch中的主体周围,并且可以从catch内部调用ssc.stop(true,true)。 / p>
另一种方法是-在catch代码块的内部包装负责失败的代码,在持久性存储(hdfs或s3或与之相关的任何火花)中创建标记文件,并从驱动程序中进行检查-每当存在标记文件时将其删除以及调用ssc.stop(true,true)。