【问题标题】:Spark Execution Error: Python in worker has different VersionSpark执行错误:工作人员中的Python具有不同的版本
【发布时间】:2017-10-31 09:45:47
【问题描述】:

我在独立模式下运行 spark,在 Windows 8 中使用 anaconda 3.5,ipython notebook。

规范,我正在尝试创建的环境如下:

import os
import sys
import numpy
spark_path = "D:\spark"
os.environ['SPARK_HOME'] = spark_path
os.environ['HADOOP_HOME'] = spark_path


sys.path.append(spark_path + "/bin")
sys.path.append(spark_path + "/python")
sys.path.append(spark_path + "/python/pyspark/")
sys.path.append(spark_path + "/python/lib")
sys.path.append(spark_path + "/python/lib/pyspark.zip")
sys.path.append(spark_path + "/python/lib/py4j-0.10.4-src.zip")


from pyspark import SparkContext
from pyspark import SparkConf

sc = SparkContext("local", "test")

当我尝试运行以下代码时:

rdd = sc.parallelize([1,2,3])
rdd.count() 

它给了我错误:

worker 中的 Python 3.4 版本与驱动程序 3.5 中的版本不同, PySpark 无法使用不同的次要版本运行。请检查 环境变量 PYSPARK_PYTHON 和 PYSPARK_DRIVER_PYTHON 是 正确设置。

我试过this

import os

os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/2.1.0/" ## Exact anaconda path in "program files"

我试过this

但两者都无法解决我的问题。有人可以帮我解决这个问题吗?在计算机系统配置方面我有点非技术性。

非常感谢!

【问题讨论】:

  • 对于初学者来说,按照 Spark 标准,Spark 1.5 已经相当老了; AFAIK 1.x 分支在 1.6.3 上几乎停滞不前——而 2.x 分支目前处于 2.1.1(并且正在快速移动......)
  • 免责声明:我不熟悉传统的 iPython —— 只有 Jupyter 以及它在 JSON 文件中为 Python / Spark / 其他任何东西使用“内核”配置的方式(就像一个显示在您的链接中)。因此,我不完全理解你试图用那些试图以硬方式配置 Spark 的 Python 代码做什么。 但是错误消息建议您应该设置os.environ['PYSPARK_PYTHON'] = '/wheverer/is/your/anaconda/python3.5'(是的,您用于运行该脚本的同一可执行文件的完整路径...这不是您PATH中的默认python ,很明显)
  • @SamsonScharfrichter:感谢您的评论。我也试过 2.1.0。但仍然收到此错误。我在 jupyter notebook 中指定了这些环境变量,而不是在系统中。另外,我尝试了“PYSPARK_PYTHON”选项。但是还是不行。
  • 内核不是“系统”,它只是一个用于启动特定运行时环境的配置文件...为 Spark 设置“系统”将在$SPARK_HOME/conf/spark-env.shexport PYSPARK_PYTHON=/wheverer/is/your/anaconda/python3.5
  • @SamsonScharfrichter:感谢 Samson 的回答!我会测试它并让你知道。您可以将您的评论放在答案中。我会将其标记为已回答。

标签: apache-spark pyspark anaconda


【解决方案1】:

首先,如果您正在使用 Spark,我建议您使用 Virtualbox 并安装 ubuntu 14.04 LTS 或 CentOs! 即使您使用它独立开发带有 Windows 后端的应用程序也会变得更加困难! 尽管如此,如果您尝试从 win 连接到 HIVE Metastore / hadoop,这几乎是不可能的......

我们在 cloudera manager 上遇到了同样的问题,解决方案是在所有节点上解析相同版本的 anaconda,并更改 .bashrc 中的 PATH 变量

我认为最好在 jupiter 之外设置变量! 尝试在 windows 中为 python 和 spark 重新配置路径环境!

【讨论】:

  • 感谢您的建议。我已经将设置转移到 ubuntu VM 中。
  • 太棒了!昨天我们在集群管理器上遇到了同样的问题!我们必须使用一个包裹,在每个节点上部署好的版本。如果您不使用集群管理器(为什么要单独使用?)。我建议编辑 .bashrc 文件,最后设置 export PATH=What_you _want
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 2015-05-02
  • 2021-02-07
相关资源
最近更新 更多