我正在使用Yarn进行火花作业。
问题是:一个工作程序(将其命名为worker2)上的Python解释器路径为/data/software/miniconda3/bin/python
。
我的pyspark脚本在worker2
上。下面是spark-env.sh
上的worker2
。
YARN_CONF_DIR=/etc/hadoop/conf
#PYSPARK_PYTHON=`which ipython`
PYSPARK_PYTHON=/data/software/miniconda3/bin/python
但是,worker1
上的Python解释器路径为/software/anaconda3/bin/python
并且,我已经在spark-env.sh
上设置了worker1
:
PYSPARK_PYTHON=/software/anaconda2/envs/py3/bin/ipython
但是,在运行时,它引发了错误:
Caused by: java.io.IOException: Cannot run program "/data/software/miniconda3/bin/python": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at org.apache.spark.api.python.PythonWorkerFactory.startDaemon(PythonWorkerFactory.scala:174)
那么,如何使spark知道worker1
上的真实Python解释器路径?
此外,我的提交火花的脚本是:
sudo -E -u hdfs spark-submit --master yarn word_cnt.py