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 的命令。
请问有什么线索吗?
您似乎对鱼别名是什么感到困惑。当你运行这个时:
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 脚本中。
归档时间: |
|
查看次数: |
26424 次 |
最近记录: |