我正在尝试使用远程位置的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作业的返回码,以便强行完成任务。 或者你能否提出另一种解决方案。
谢谢,Chetan
答案 0 :(得分:0)
您需要实现sparkListener。更多信息可在以下链接中找到。
答案 1 :(得分:0)
所以这就是我解决我面临的问题的方法。简单的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)