火花提交:找不到命令
spark-submit: command not found
一个很简单的问题:
我尝试使用 bash 脚本提交 spark 作业。但不知何故,它一直抱怨找不到 spark-submit
命令。
但是当我直接在我的终端中复制命令和 运行 时,它 运行 没问题。
我的 shell 是鱼 shell,这是我的鱼 shell 配置:~/.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.
有什么线索吗?
您似乎对什么是鱼别名感到困惑。当你 运行 这个:
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 脚本中放入类似的别名命令。
确保将此命令添加到路径:
export PATH=$PATH:/Users/{your_own_path_where_spark_installed}/bin
对于 mac
,打开这些文件之一 ~/.bash
、~/.zprofile
、~/.zshrc
并在文件中添加以下命令。
一个很简单的问题:
我尝试使用 bash 脚本提交 spark 作业。但不知何故,它一直抱怨找不到 spark-submit
命令。
但是当我直接在我的终端中复制命令和 运行 时,它 运行 没问题。
我的 shell 是鱼 shell,这是我的鱼 shell 配置:~/.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.
有什么线索吗?
您似乎对什么是鱼别名感到困惑。当你 运行 这个:
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 脚本中放入类似的别名命令。
确保将此命令添加到路径:
export PATH=$PATH:/Users/{your_own_path_where_spark_installed}/bin
对于 mac
,打开这些文件之一 ~/.bash
、~/.zprofile
、~/.zshrc
并在文件中添加以下命令。