2015-09-07 38 views
2

我有一個scala腳本文件,通過交互式spark-shell以經典的方式成功執行:輸入spark-shell,粘貼腳本,等到完成。如何使用nohup從文件執行spark-shell?

我希望能夠離開這個東西工作,並退出ssh會議,回到我需要的結果。

我嘗試這樣做,它行爲異常

spark-shell -i file.scala >> out.log 2>&1 & 

只會打印幾個常用的火花輸出out.log的線,然後報告的過程已經結束。當我做'ps aux | grep spark'我看到在進程中有火花。

當我運行它的行爲如預期,但我必須離開會議打開我的結果。

spark-shell -i file.scala 

有沒有辦法使nohup得到spark-shell正常工作?

我知道有火花提交與罐子工作,但它感覺不太直觀,對於一個簡單的測試,我不得不聲稱一個罐子,並做魔術魔術。

+1

我會建議編寫一個腳本來做Maven的東西,然後'spark-submit'。那麼至少這只是一件事情。 – sourcedelica

回答

0

我用一個shell腳本來執行spark-shell,裏面my-script.sh

$SPARK_HOME/bin/spark-shell < $HOME/test.scala > $HOME/test.log 2>&1 & 

通過谷歌搜索的地方閱讀,並嘗試過。它正在爲我的目的而努力。

0

老問題,但你真的嘗試使用nohup命令?

只要使用&來背景進程不會阻止它退出,如果它收到一個SIGHUP信號,這是登錄過程時將收到的。

試試這個:

nohup spark-shell -i file.scala >> out.log & 
4

我遇到的spark-shell相同的行爲與nohup。其原因尚不清楚,但可以使用tmux而不是nohup作爲解決方法。有關如何使用tmux的相當不錯的指南可以找到here

組可能的動作是如下:

$ tmux new -s session-name 
$ ./bin/spark-shell 
# do usual stuff manually 

然後,如果你關閉終端窗口並退出SSH會話,你可以重新進入tmux會是這樣的:

$ tmux attach -t session-name