Pyspark处理Ctrl + Z?

时间:2016-07-20 16:48:41

标签: apache-spark signals pyspark

运行pyspark时,如果在进程中间执行 Ctrl + Z ,则会停止作业运行,但不会关闭SparkContext。这意味着端口也没有关闭,并且火花必须跳过几个端口才能在下次有人运行火花作业时连接。我想阻止人们在运行这些脚本时使用 Ctrl + Z ,但是当SparkContext运行时,标准的python处理程序似乎不起作用,我假设是因为它在Java中运行技术并且我只为python设置了一个处理程序?这是我写的一个例子。

    import signal
    from pyspark import SparkContext
    sc = SparkContext()

    def handler(signum, frame):
        print 'Please refrain from using CTRL + Z, use CTRL + C instead'

    signal.signal(signal.SIGTSTP, handler)

    while True:
        pass

当我运行此代码时,按 Ctrl + Z 仍然执行暂停的默认行为,而不是执行我的处理函数。

如果我消除了火花内容,那么这段代码就像我想要的那样工作:

    import signal

    def handler(signum, frame):
        print 'Please refrain from using CTRL + Z, use CTRL + C instead'

    signal.signal(signal.SIGTSTP, handler)

    while True:
        pass

1 个答案:

答案 0 :(得分:0)

我最终做的是在spark-submit之前将trap "" SIGTSTP添加到我的spark-submit shell脚本中。