Spark优雅地停止和退出(1)

dffbzjpn  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(963)

我运行一个spark应用程序作为 yarn-cluster 模式。
我有一个困难的是,我不能停止Spark优雅然后退出(1)提交失败的Jenkins工作。

jenkins执行的shell脚本

/bin/spark-submit \
    --master yarn-cluster \
   ...

Spark应用

val sparkSession = ...
val resultDataframe = ...

if(resultDataframe.count() == 0){
  // lets stop spark
  sparkSession.stop()
  // I want to finish spark app and fail jenkins job, so throw exception.
  throw new RuntimeException("Hey Jenkins, please fail.")
}

上述代码的行为

spark应用程序在retrying conf时重试。但是我不想出于一般目的而关闭重试。上面的代码不是实际的,但是流程是相似的。

问题

如何在应用程序中以编程方式停止spark并退出主应用程序exit和fail by?

kzipqqlq

kzipqqlq1#

阿法伊克, System.exit(1) 会解决你的问题。

if(resultDataframe.count() == 0){
   println("Hey Jenkins, please fail")
   System.exit(1)
   }

上述程序将退出 exit 1 带有以下消息

Hey Jenkins, please fail

如果上述方法不起作用,那么
在shell脚本中,运行spark submit,然后(使用上面的 System.exit(1) 代码)并尝试使用 $? 接线员。

if [ $? -eq 1 ];
     exit 1

相关问题