【问题标题】:spark-submit: command not found火花提交:找不到命令
【发布时间】: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


【解决方案1】:

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

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 脚本中放入类似的别名命令。

【讨论】:

  • 谢谢。但我不完全理解您的解决方案:如何在我的 bash 脚本中放置类似的别名命令?这是什么意思?
  • 我认为 Kurtis 想说的是您应该编辑上面的脚本以使用 /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark-submit 而不仅仅是 spark-submit
  • 或者把spark-submit= /Users/MY_NAME/Downloads/spark-2.0.2-bin-hadoop2.7/bin/spark‌​-submit放在脚本的顶部然后SUBMIT_COMMAND="HADOOP_USER_NAME=hdfs $spark-submit ..."
  • 完美!我最终想通了。我现在已经切换到 zsh shell,并添加了这两行并且它可以工作:export PATH=$HOME/bin:/usr/local/bin:$PATH export PATH=$PATH:/usr/local/spark/bin 在我的 ~/.zshrc 中非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-11-06
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
相关资源
最近更新 更多