将自定义exitcode从yarn-cluster模式spark传递给CLI

Zxc*_*Mnb 8 hadoop-yarn apache-spark

我通过spark-submit开始了一个纱线集群模式火花工作.为了表示部分失败等,我想将exitcode从驱动程序传递给调用spark-submit的脚本.

我尝试了两个,System.exit并在驱动程序中抛出SparkUserAppException,但在这两种情况下CLI只得到1,而不是我传递的exitcode.

我认为传递自定义exitcode是不可能的,因为驱动程序传递的任何exitcode都将转换为yarn状态,yarn会将任何失败的exitCode转换为1或失败.

cod*_*ode 1

通过查看 Spark 代码,我可以得出这样的结论:

在模式下是可能的client。查看SparkSubmitrunMain()的方法

而在cluster模式下,无法获取驱动程序的退出状态,因为您的驱动程序类将在其中一个执行程序中运行。

有一种替代解决方案可能/可能不适合您的用例:

使用端点托管 REST API,以从驱动程序代码接收状态更新。如果出现任何异常,请让您的驱动程序代码使用此端点来更新状态。