与Getting app run id for a Spark job类似,但命令行或脚本除外。
我正在从我们的持续部署系统自动运行spark-submit
,我需要跟踪应用程序ID,以便在再次运行作业(以及其他各种需求)之前将其杀死。
具体来说,这是一个在YARN集群上执行作业的Python脚本,可以读取spark-submit
的标准输出,我们需要将该应用程序ID保存一段时间。
到目前为止我能想到的最好的计划是运行spark-submit
,观察标准输出并提取应用程序ID,然后从进程中分离出来。在我看来,这种方法并不理想。
最好,spark-submit
将(仅)打印出应用程序ID,然后打开,到目前为止,除了修改Spark本身之外,我看不到任何方法。
有更好,更明显的方法吗?
答案 0 :(得分:0)
我已经创建了一个包装器脚本,可以为您提取应用程序ID。它的主持人是:https://github.com/gak/spark-submit-app-id-wrapper
示例:
# pip install spark-submit-app-id-wrapper
# ssaiw spark-submit --master yarn-cluster --class etc etc > /dev/null
application_1448925599375_0050
现在CI脚本可以通过spark-submit
运行ssaiw
并尽快获取应用程序ID。
请注意,它仅使用YARN进行测试。