linux - 如何从 spark-submit 获取返回码?

标签 linux apache-spark ssh pyspark

我正在尝试在远程位置使用 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/

相关文章:

ssh - 是否可以告诉 ansible 不使用 ~/.ssh/config?

javascript - 我刚刚使用 Node.js 实现了什么?

scala - Spark(Scala)从驱动程序写入(和读取)本地文件系统

linux - 未通过目标时打印默认目标

linux - 如何重新排序服务启动 - CentOS?

linux - 从子文件中的母文件中搜索一个数字,并将子文件中的完整行追加到母文件中

multithreading - 计时 Spark 过程,如果过慢则将其终止

apache-spark - Apache Spark MLlib 模型文件格式

没有 SSH 的 Git pull ?

linux - 如何在给定单词匹配后打印所有行直到换行符