scala - 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:等待应用程序成功注销
我正在寻找解决此方案的建议或输入,以以适当的状态结束应用程序。如果您需要任何其他详细信息,请告诉我。
解决方案
推荐阅读
- apache-kafka - 如何在单个异步调用中将多条消息推送到一个主题
- php - 如何在 Amazon API Gateway 上检测 GET 请求的 HTTP 用户代理?
- macos - 进程启动时如何从PID获取进程路径?
- java - 如何在android中实现手绘图像裁剪?
- javascript - 如何使用 react-native-video 反向播放视频?
- javascript - 如何使用 JavaScript 检测投掷球的手势?
- sql - 从最小值和特定名称连接表
- node.js - 使用没有 express.js 的核心 node.js 进行会话管理
- c# - 按钮有时不会在 Windows 窗体上被禁用
- .htaccess - 如何使用 Cloudflare DNS 重定向通配符子域并将 SSL 加密为 HTTPS 版本?