Apache spark PYSPARK_PYTHON可以使用--deploy模式客户端,但不能使用--deploy模式集群

Apache spark PYSPARK_PYTHON可以使用--deploy模式客户端,但不能使用--deploy模式集群,apache-spark,pyspark,ibm-cloud,yarn,biginsights,Apache Spark,Pyspark,Ibm Cloud,Yarn,Biginsights,我正在尝试使用自定义python运行python脚本,并在Enterprise 4.2集群上部署--deploy mode cluster [biadmin@bi4c-xxxxx-mastermanager~]$hive 配置单元>创建表戳(foo INT,条形字符串); 好啊 所用时间:2.147秒 配置单元>加载数据本地INPATH'/usr/iop/4.2.0.0/hive/doc/examples/files/kv1.txt'覆盖到表pokes中; 正在将数据加载到表default.po

我正在尝试使用自定义python运行python脚本,并在Enterprise 4.2集群上部署
--deploy mode cluster

[biadmin@bi4c-xxxxx-mastermanager~]$hive
配置单元>创建表戳(foo INT,条形字符串);
好啊
所用时间:2.147秒
配置单元>加载数据本地INPATH'/usr/iop/4.2.0.0/hive/doc/examples/files/kv1.txt'覆盖到表pokes中;
正在将数据加载到表default.pokes
表default.pokes stats:[numFiles=1,numRows=0,totalSize=5812,rawDataSize=0]
好啊
所用时间:0.49秒
蜂巢>
然后我创建了一个简单的pyspark脚本:

[biadmin@bi4c-xxxxxx-mastermanager~]$cat test_pokes.py
从pyspark导入SparkContext
从pyspark.sql导入HiveContext
sc=SparkContext()
hc=HiveContext(sc)
pokesdd=hc.sql('select*from pokes')
打印(pokesdd.collect())
然后,我尝试按如下方式运行脚本:

export PYSPARK_PYTHON=/home/biadmin/anaconda2/bin/python2.7
导出PYSPARK_驱动程序_PYTHON=/home/biadmin/anaconda2/bin/python2.7
火花丝——母纱\
--部署模式群集\
--jars/usr/iop/4.2.0.0/hive/lib/datanucleus-api-jdo-3.2.6.jar,/usr/iop/4.2.0.0/hive/lib/datanucleus-core-3.2.10.jar,/usr/iop/4.2.0.0/hive/lib/datanucleus-rdbms-3.2.9.jar\
--文件/usr/iop/current/spark client/conf/hive-site.xml\
test_pokes.py
它在纱线簇上运行,但不使用
PYSPARK\u PYTHON
变量

但是,如果我使用
--deploy mode client
,那么就可以使用
PYSPARK\u PYTHON


更新

在初始化SparkContext之前,我尝试添加以下内容:

os.environ[“PYSPARK_PYTHON”]='/home/biadmin/anaconda2/bin/python2.7'
os.environ[“PYSPARK_DRIVER_PYTHON”]='/home/biadmin/anaconda2/bin/python2.7'
另外,尝试设置
--conf spark.warn.appMasterEnv.PYSPARK\u PYTHON=/home/biadmin/anacond‌​a2/bin/python2.7

Container:bi4c-xxxxxx-data-1.bi.services.bluemix.net上的Container_e09_1477084339086_0508_02_000001
==========================================================================================================
日志类型:stderr
...
java.io.IOException:无法运行程序“/home/biadmin/anaconda2/bin/python2.7”:错误=2,没有这样的文件或目录
但是,

[biadmin@bi4c-xxxxxx-mastermanager~]$ssh bi4c-xxxxxx-data-1.bi.services.bluemix.net
[biadmin@bi4c-xxxxxx-data-2~]$ls/home/biadmin/anaconda2/bin/python2.7
/住宅/双管理员/蟒蛇2/bin/python2.7

你是对的,PYSPARK_PYTHON不会以这种方式工作

在启动Spark上下文之前,可以尝试在脚本中添加以下命令行:

os.environ["PYSPARK_PYTHON"] = '/home/biadmin/anaconda2/bin/python2.7'
os.environ["PYSPARK_DRIVER_PYTHON"] = '/home/biadmin/anaconda2/bin/python2.7'

当然,如果您的anaconda路径如上所述,如果不是,您需要将其添加到工作人员中,或者更改anaconda在每个工作中的路径。

对我有效的方法是使用conda pack打包python环境,如下所述:

然后通过----归档部署它。 请注意,使用export设置PYSPARK_PYTHON确实不起作用,您需要使用--conf进行设置

这对我很有用:

conda create -y -n pyspark_conda_env
conda activate pyspark_conda_env
conda pack -f -o pyspark_conda_env.tar.gz
spark-submit --master yarn \
       --archives pyspark_conda_env.tar.gz#environment \
       --deploy-mode cluster \
       --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \
       --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./environment/bin/python \
       main.py

不幸的是,它没有做到这一点:
文件/disk4/local/usercache/biadmin/appcache/application_1477084339086_0505/container_e09_1477084339086_0505_02_000002/pyspark.zip/pyspark/worker.py”,第64行,主要(“%d.%d”%sys.version_info[:2],version))异常:worker中的Python版本与驱动程序2.6中的版本2.7不同,PySpark无法在不同的次要版本下运行,但是
os.environ
工作正常吗?该错误意味着您指向的是其他版本的Python。您需要更改工作人员的python。我在设置os.Enviro[“.”之后添加了
print(sys.executable)
,不幸的是它显示了
/usr/bin/python
So,在spark的调用中试试这个:
--conf spark.warn.appMasterEnv.PYSPARK_PYTHON=/home/biadmin/anaconda2/bin/python2.7
java.io.IOException:Cannot run program”/home/biadmin/anaconda2/bin/python2.7”:错误=2,没有这样的文件或目录
-请参阅相关更新