2017-08-17 210 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 $火花提交......“。 –