2015-09-07 35 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