2016-07-20 5 views
1

pysparkを実行しているときに、処理の途中でCtrl + Zを実行すると、ジョブの実行は停止しますが、SparkContextは閉じません。これは、ポートが閉じられていないことを意味し、誰かがスパークジョブを実行したときに次のポートに接続するためにスパークがいくつかのポートを飛び越えなければなりません。私はこれらのスクリプトを実行している間に人々がCtrl + Zを使用しないようにしたいのですが、SparkContextの実行時に標準のpythonハンドラが動作していないように見えます。実際にはjava私はPython用のハンドラしか設定していませんか?ここに私が書いたもののサンプルがあります。PysparkハンドルCtrl + Z?

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はまだ一時停止ではなく、私のハンドラ関数を実行するデフォルトの動作を行い押すと、このコードを実行します。

このコードは、私がようにスパークコンテンツを排除する場合、私はそれを望むように動作します:私はちょうど火花防止型の前に私の火花提出するシェルスクリプトにtrap "" SIGTSTPを追加してやってしまった何を

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 

答えて

関連する問題