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

时间:2016-12-29 09:32:22

标签: apache-spark yarn

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

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

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

2 个答案:

答案 0 :(得分:1)

通过查看火花代码,我可以得出结论:

可以client模式。查看SparkSubmit

runMain()方法

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

对于您的用例,有一个备用解决方案可能/可能不合适

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

答案 1 :(得分:1)

您可以将退出代码保存在输出文件中(在HDFS或本地FS上),并使您的脚本等待此文件外观,阅读并继续。这绝对不是一种优雅的方式,但它可以帮助你继续。 保存文件时,请注意此位置的权限。您的火花过程必须具有RW访问权限。

相关问题