在 Rodeo 中 运行 时,pySpark 有一个 worker - 驱动程序版本冲突

pySpark has a worker - driver version conflict when ran in Rodeo

以下简单脚本在来自终端 运行 的 pyspark 中运行良好:

import pyspark

sc = pyspark.SparkContext()
foo = sc.parallelize([1,2])
foo.foreach(print)

但是当在 Rodeo 中 运行 时,它会产生一个错误,其中最重要的一行是:

Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions

完整的错误输出可以在这个 link 找到:http://pastebin.com/raw/unGuGLhq

我的$SPARK_HOME/conf/spark-env.sh 文件包含以下行:

export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3

尽管如此,问题仍然存在,将相同的行放入 ~/.bashrc 也不能解决问题。

圈地版本:1.3.0

Spark 版本:1.6.1

平台:Linux

此问题与此处描述的问题相关:link

Rodeo 作为桌面应用程序很难使用 shell 环境变量。诀窍是将我们通常在 spark-env.sh 中声明的变量放在 Rodeo 的 .rodeoprofile 中,而不是使用 os 模块来添加它们。特别是在这种情况下,将以下行添加到 .rodeoprofile 有帮助:

os.environ["PYSPARK_PYTHON"]="python3"
os.environ["PYSPARK_DRIVER_PYTHON"]="python3"

(虽然第二个是多余的,我添加它只是为了保持一致性,因为驱动程序无论如何都使用 3.5)