2017-08-17 3647 views
0

一個非常簡單的問題:spark-submit:command not found

我嘗試使用bash腳本來提交spark任務。但不知何故,它總是抱怨它找不到​​命令。 但是,當我只複製命令並直接在我的終端中運行時,它運行良好。

我的殼魚貝,這裏就是我有我的魚貝的配置:~/.config/fish/config.fish

alias spark-submit='/Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit'

這裏是我的bash腳本:

#!/usr/bin/env bash 


SUBMIT_COMMAND="HADOOP_USER_NAME=hdfs spark-submit \ 
     --master $MASTER \ 
     --deploy-mode client \ 
     --driver-memory $DRIVER_MEMORY \ 
     --executor-memory $EXECUTOR_MEMORY \ 
     --num-executors $NUM_EXECUTORS \ 
     --executor-cores $EXECUTOR_CORES \ 
     --conf spark.shuffle.compress=true \ 
     --conf spark.network.timeout=2000s \ 
     $DEBUG_PARAM \ 
     --class com.fisher.coder.OfflineIndexer \ 
     --verbose \ 
     $JAR_PATH \ 
     --local $LOCAL \ 
     $SOLR_HOME \ 
     --solrconfig 'resource:solrhome/' \ 
     $ZK_QUORUM_PARAM \ 
     --source $SOURCE \ 
     --limit $LIMIT \ 
     --sample $SAMPLE \ 
     --dest $DEST \ 
     --copysolrconfig \ 
     --shards $SHARDS \ 
     $S3_ZK_ZNODE_PARENT \ 
     $S3_HBASE_ROOTDIR \ 
     " 

eval "$SUBMIT_COMMAND" 

我已經試過: 當我將這個命令直接複製並直接運行時,我可以在我的Mac OS X fish shell上完美地運行此命令。 但是,我想實現的是能夠運行./submit.sh -local,它執行上面的shell。

請提供任何線索嗎?

+0

數據不足。請向我們展示您輸入的內容以及輸出包括所有錯誤(只需從終端複製/粘貼)。另外,如果你輸入'ls -l。/ submit.sh',你會看到什麼?換句話說,你的CWD中的腳本是什麼? –

+0

另外,如果你通過bash腳本運行'spark-submit',你爲什麼需要魚別名?它的用途是什麼?這與你的問題有什麼關係? –

+0

輸出結果爲:'./submit.sh:line 186:spark-submit:command not found'。這是我看到'ls -l submit.sh -rwxr-xr-x 1 myname staff 5700 Aug 17 16:14 submit.sh' – FisherCoder

回答

2

你似乎對什麼是魚別名感到困惑。當您運行此:

alias spark-submit='/Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit' 

你實際上是這樣:

function spark-submit 
    /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit $argv 
end 

也就是說,你要定義一個魚功能。你的bash腳本不知道這個函數。您需要將該路徑放入您的$PATH變量中,或將類似的別名命令放入您的bash腳本中。

+0

謝謝。但是我並不完全理解你的解決方案:我怎樣才能在我的bash腳本中放置一個類似的別名命令?這是什麼意思? – FisherCoder

+0

我覺得Kurtis試圖說的是,你應該編輯上面的腳本來使用'/ Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit'而不是'spark -submit'。 – Zanchey

+0

或者在腳本的頂部放置'spark-submit = /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit',然後執行'SUBMIT_COMMAND =「HADOOP_USER_NAME = hdfs $火花提交......「。 –