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