首页 > 解决方案 > Scala Spark 应用程序没有以正确的状态退出

问题描述

我正在开发一个 spark 独立应用程序,它具有以下代码结构:

代码结构:

jobStatus=Pass
try
{
calls rest API based on status it throws exception or success
}
catch{ 
catch all exceptions
jobStatus =Fail
}
finally
{
jobStatus match {
        //case Pass => System.exit(0)
        case Pass => return(0) 
        //case Fail => System.exit(1)
        case Fail => return(1) 
      }
}

所以,如果我使用 System.exit (0) 或 (1),火花应用程序总是以失败状态退出(即使没有例外)。

如果我使用返回(0)或(1)火花应用程序总是以成功状态结束(即使有异常)

使用的版本:

斯卡拉版本:2.11.0

火花版本:2.2.0

Spark 日志(return(0) 或 return(1) 情况:

信息 SparkContext:成功停止 SparkContext

INFO ApplicationMaster:使用SUCCEEDED取消注册 ApplicationMaster

INFO AMRMClientImpl:等待应用程序成功注销。

INFO ShutdownHookManager:已调用关闭挂钩

Spark 日志(System.exit(0) 或 System.exit(1) 情况:

信息 SparkContext:成功停止 SparkContext

INFO ApplicationMaster:最终应用状态:FAILED,exitCode:16,(原因:在报告最终状态之前调用了关闭挂钩。)

INFO ApplicationMaster:使用FAILED取消注册 ApplicationMaster (诊断消息:在报告最终状态之前调用了关闭挂钩。)

INFO AMRMClientImpl:等待应用程序成功注销

我正在寻找解决此方案的建议或输入,以以适当的状态结束应用程序。如果您需要任何其他详细信息,请告诉我。

标签: scalaapache-sparkexception

解决方案


推荐阅读