应用程序是复杂生态系统的一部分,我们使用Yarn Rest Api跟踪所有作业的状态。
现在对于一些特定的业务场景,我们需要将Spark Job标记为失败,但我已经陷入了Gotcha的情况,因为无论我在Spark Job错误/异常或System.exit(123) Job中提出什么,都不会在Yarn中标记为完成,finalstatus为成功。
使用spark-submit启动spark作业。
object Execute {
def main(args: Array[String]) {
val sc = new SparkContext(sparkConf)
if(businessException needs to be raised)
//What to do???
}
}
我在spark工作中尝试过的事情:
- 抛出新的错误("Whatever")
- 抛出新的异常("Whatever")
- system . exit (123)
- sys.exit (123)
希望有人能告诉我如何在yarn UI中标记spark job失败
别管这个。无论如何,Yarn对spark应用程序的报告是不稳定的,从Jira上的多个错误可以看出,这表明Yarn有时会将成功的spark作业标记为失败,反之亦然。
我最终制作了自己的db表来跟踪产生的最终状态(错误,成功等),这是根据条件从spark job更新的