python - 环境变量 PYSPARK_PYTHON 和 PYSPARK_DRIVER_PYTHON

标签 python python-3.x apache-spark pyspark

我最近安装了pyspark。它已正确安装。当我在 python 中使用以下简单程序时,出现错误。

>>from pyspark import SparkContext
>>sc = SparkContext()
>>data = range(1,1000)
>>rdd = sc.parallelize(data)
>>rdd.collect()

在运行最后一行时,我收到错误,其关键行似乎是

[Stage 0:>                                                          (0 + 0) / 4]18/01/15 14:36:32 ERROR Executor: Exception in task 1.0 in stage 0.0 (TID 1)
org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pyspark/python/lib/pyspark.zip/pyspark/worker.py", line 123, in main
    ("%d.%d" % sys.version_info[:2], version))
Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

我在 .bashrc 中有以下变量

export SPARK_HOME=/opt/spark
export PYTHONPATH=$SPARK_HOME/python3

我使用的是 Python 3。

最佳答案

如果您在某个环境中工作,也可能会发生这种情况。在这种情况下,检索 python 可执行文件的正确路径可能会更困难(无论如何,如果您想与其他人共享路径,我认为硬编码路径不是一个好主意)。

如果您在脚本/笔记本的开头运行以下几行(至少在创建 SparkSession/SparkContext 之前),问题就可以解决:

import os
import sys

os.environ['PYSPARK_PYTHON'] = sys.executable
os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable

os允许你设置全局变量;包sys给出了带有Python解释器的可执行二进制文件的绝对路径的字符串。

关于python - 环境变量 PYSPARK_PYTHON 和 PYSPARK_DRIVER_PYTHON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260412/

相关文章:

python-3.x - 从 : h2o. grid.grid_search.H2OGridSearch 获取 H2O 神经网络的结果

apache-spark - Spark - 将字符串 ID 转换为唯一的整数 ID

arrays - 用 PySpark 中的对应元素替换数组中的元素

Python - 从动态 attrname 列表在 __init__ 中创建属性

python - 在 python 中获取更有用的 'logging' 模块错误输出

python - GCS Objects#list 请求中返回的最大项目数

mysql - 如何在 scala/python 中将计算列添加到数据框中?

python-3.x - Pandas 。如何逐行更新新的 Pandas 列

apache-spark - 顺序 RDD 处理中的函数式方法 [Apache Spark]

python - 在python中生成除特定数字之外的范围内的随机不重复数字