火花提交:找不到命令

Fis*_*der 0 macos bash shell environment-variables fish

一个非常简单的问题:

我尝试使用 bash 脚本提交 Spark 作业。但不知怎的,它一直抱怨找不到spark-submit命令。但是当我复制命令并直接在终端中运行时,它运行良好。

我的 shell 是 Fish shell,这是我的 Fish 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"
Run Code Online (Sandbox Code Playgroud)

我尝试过的:当我逐字复制此命令并直接运行时,我可以在我的 Mac OS X Fish shell 上完美地运行此命令。但是,我想要实现的是能够运行./submit.sh -local执行上述 shell 的命令。

请问有什么线索吗?

Kur*_*der 6

您似乎对鱼别名是什么感到困惑。当你运行这个时:

alias spark-submit='/Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit'
Run Code Online (Sandbox Code Playgroud)

你实际上正在这样做:

function spark-submit
   /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit $argv
end
Run Code Online (Sandbox Code Playgroud)

也就是说,您正在定义一个 Fish 函数。您的 bash 脚本不知道该函数。您需要将该路径放入$PATH变量中,或者将类似的别名命令放入 bash 脚本中。