在使用spark-submit運行工程jar包時常常會出現一下兩個問題:
1.在程序中手打的log(如print(“***testRdd.count=”+testRdd.count())常常會因被下一個Job的執行日誌覆蓋掉而無法查看日誌;,或執行日誌過多,不好查看print的內容。
2.一旦命令窗口被關閉或者電腦因斷電等原因異常關閉,程序便終止運行。
其中,第一個問題可以通過將運行日誌重定位到文件中來解決,命令如下:
spark-submit testSpark.jar > ~/testLog.out
運行上條命令則可將手打的log保存到~/testLog.out中,且日誌中僅保存手打Log內容,執行日誌打印到命令行。上面這個命令每次寫入testLog.out文件時都會覆蓋上次的內容,可以用追加的形式:
spark-submit testSpark.jar >> ~/testLog.out
第二個問題,則可以通過後臺運行Spark-submit命令nohip來解決,命令如下:
nohip spark-submit testSpark.jar &
運行上條命令則實現在後臺運行spark命令,不用擔心電腦異常關機以及命令行不小心關閉等問題,且輸出日誌保存在當前目錄的nohip.out目錄中。
如果希望既可以後臺運行命令又可以將日誌保存到目的文件中,則可將上述兩個命令結合起來,命令如下:
nohip spark-submit testSpark.jar > ~/testLog.out &
如此,便可實現後臺運行的問題,nohip不僅可以用於後臺執行Spark命令,也可用於後臺執行其他jar包,可具體查找nohip的使用方法。
轉自: