我在yarn上以客户端模式使用spark-submit提交pyspark作业。
spark-submit
--name $APP_NAME
--master yarn
--deploy-mode client
--num-executors 16
--executor-cores 1
--driver-memory 6g
--executor-memory 2g
--py-files myfile.py
--version 2.3
作业成功完成,我可以在Spark历史记录以及Yarn中验证这一点。即使在作业完成后,我仍然看到spark提交过程在运行,并且它没有终止。
我想从调用提交作业的调用程序(Jenkins使用通过ssh插件发布(返回作业状态。是否有任何方法可以确保火花提交过程在完成作业后以正确的退出代码终止?
我尝试过停止spark上下文,并将退出状态放在python脚本的末尾。这仍然不起作用。
sc.stop()
sys.exit(0)
这种情况大多是随机发生的,用于长时间运行的作业。我认为集群模式没有任何问题。
您可以编写unix shell脚本,然后可以通过$检查命令的starus?
spark-submit
--name $APP_NAME
--master yarn
--deploy-mode client
--num-executors 16
--executor-cores 1
--driver-memory 6g
--executor-memory 2g
--py-files myfile.py
--version 2.3
然后你可以检查状态并添加你的条件
if [ $? -eq 0 ];then
echo 'Success'
else
'fail'
fi
您可以将conf--deploy-mode
更改为cluster
,然后重试。