我正在尝试在远程位置使用 ssh 连接执行 spark 作业。
在某些情况下,作业失败但调度程序将其标记为“成功”,因此我想检查 spark-submit 的返回码,以便我可以强行使其失败。
下面是我使用的代码
def execute_XXXX():
f = open('linux.pem','r')
s = f.read()
keyfile = StringIO.StringIO(s)
mykey = paramiko.RSAKey.from_private_key(keyfile)
sshcon = paramiko.SSHClient()
sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshcon.connect('XXX.XXX.XXX.XXX', username='XXX', pkey=mykey)
stdin, stderr, stdout= sshcon.exec_command('spark-submit XXX.py')
logger.info("XXX ------>"+str(stdout.readlines()))
logger.info("Error--------->"+str(stderr.readlines()))
如何获取 spark-submit 作业的返回码,以便我可以强制使任务失败。 或者您能否建议替代解决方案。
谢谢,切坦
最佳答案
这就是我解决我面临的问题的方法。一个简单的 1 行代码就足够了。
def execute_XXXX():
f = open('linux.pem','r')
s = f.read()
keyfile = StringIO.StringIO(s)
mykey = paramiko.RSAKey.from_private_key(keyfile)
sshcon = paramiko.SSHClient()
sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshcon.connect('XXX.XXX.XXX.XXX', username='XXX', pkey=mykey)
stdin, stderr, stdout= sshcon.exec_command('spark-submit XXX.py')
if (stdout.channel.recv_exit_status())!= 0:
logger.info("XXX ------>"+str(stdout.readlines()))
logger.info("Error--------->"+str(stderr.readlines()))
sys.exit(1)
关于linux - 如何从 spark-submit 获取返回码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321182/