2017-08-17 17 views
0

非常に単純な質問:spark-submit:コマンドが見つかりません

私はspashジョブを送信するためにbashスクリプトを使用しようとしています。しかし何とかして、それは​​コマンドを見つけることができないと不満を続けています。 しかし、私はちょうどコマンドをコピーして、私の端末で直接実行すると、正常に動作します。

私のシェルは魚のシェルで、ここで私は私の魚貝の設定で持っているものです:~/.config/fish/config.fish

#!/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" 

私が試した何:

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

は、ここに私のbashスクリプトです このコマンドを文字通りコピーして直接実行すると、Mac OS Xの魚のシェルでこのコマンドを完璧に実行できます。 しかし、私が達成したいのは、上記のシェルを実行する./submit.sh -localを実行できることです。

お願いします。

+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が言っていることは、上記のスクリプトを編集して 'spark-2.0.2-bin-hadoop2.7/bin/spark-submit'を使うのではなく、'/Users/MY_NAME/Downloads/spark- - サブミット。 – Zanchey

+0

または、 'spark-submit = /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark -submit'をスクリプトの先頭に置き、' SUBMIT_COMMAND = "HADOOP_USER_NAME = hdfs $を実行してくださいspark-submit ... "と言います。 –

関連する問題