我通过spark-submit启动了纱线集群模式spark作业。
为了指示部分失败等,我想将退出代码从驱动程序传递到调用spark-submit的脚本。
我尝试了 System.exit 和在驱动程序中抛出 SparkUserAppException,但在这两种情况下 CLI 都只得到 1,而不是我传递的退出代码。
我认为不可能传递自定义退出代码,因为驱动程序传递的任何退出代码都将转换为纱线状态,并且纱线会将任何失败的退出代码转换为 1 或失败。
通过查看 Spark 代码,我可以得出这样的结论:
有可能在client
模式。看着runMain()
的方法火花提交 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala#L648 class
而在cluster
模式下,无法获取驱动程序的退出状态,因为您的驱动程序类将在执行程序之一中运行。
有一个可能/可能不合适的替代解决方案对于您的用例:
使用端点托管 REST API,以从驱动程序代码接收状态更新。如果出现任何异常,请让您的驱动程序代码使用此端点来更新状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)