一个非常简单的问题:
我尝试使用bash脚本来提交spark作业。但不知何故,它总是抱怨找不到spark-submit命令。但是当我复制出命令并直接在我的终端中运行时,它运行得很好。
我的外壳是鱼壳,下面是我在鱼壳配置中的配置:~/.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 fish shell上很好地运行这个命令。然而,我想要实现的是能够运行./submit.sh -local来执行上面的外壳。
有什么线索吗?
发布于 2017-08-18 07:50:47
你似乎搞不懂鱼的别名是什么。当您运行此命令时:
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也就是说,您正在定义一个fish函数。您的bash脚本对该函数一无所知。您需要将该路径放入$PATH变量中,或将类似的别名命令放入bash脚本中。
https://stackoverflow.com/questions/45745850
复制相似问题