【发布时间】:2018-01-26 12:04:03
【问题描述】:
一个很简单的问题:
我尝试使用 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 OS X 鱼壳上完美地运行这个命令。
但是,我想要实现的是能够运行./submit.sh -local,它执行上述shell。
请问有什么线索吗?
【问题讨论】:
-
数据不足。请准确地向我们展示您输入的内容以及包括所有错误在内的输出(只需从您的终端复制/粘贴)。另外,如果你输入
ls -l ./submit.sh,你会看到什么?换句话说,那个脚本在你的 CWD 中吗? -
另外,如果您通过 bash 脚本运行
spark-submit,为什么需要 fish 别名?它的用途是什么?它与您的问题有什么关系? -
输出为:
./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
标签: bash macos shell environment-variables fish