Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到密钥:_PYSPARK_驱动程序\u回调\u主机_Python_Apache Spark_Pyspark - Fatal编程技术网

Python 找不到密钥:_PYSPARK_驱动程序\u回调\u主机

Python 找不到密钥:_PYSPARK_驱动程序\u回调\u主机,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我正在尝试运行以下代码: import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local") \ .appName("Word Count") \ .getOrCreate() df = spark.createDataFrame([ (1, 144.5, 5.9, 33, 'M'), (2, 16

我正在尝试运行以下代码:

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder \
        .master("local") \
        .appName("Word Count") \
        .getOrCreate()

df = spark.createDataFrame([
    (1, 144.5, 5.9, 33, 'M'),
    (2, 167.2, 5.4, 45, 'M'),
    (3, 124.1, 5.2, 23, 'F'),
    (4, 144.5, 5.9, 33, 'M'),
    (5, 133.2, 5.7, 54, 'F'),
    (3, 124.1, 5.2, 23, 'F'),
    (5, 129.2, 5.3, 42, 'M'),
   ], ['id', 'weight', 'height', 'age', 'gender'])

df.show()
print('Count of Rows: {0}'.format(df.count()))
print('Count of distinct Rows: {0}'.format((df.distinct().count())))

spark.stop()
并且得到了一个错误

18/06/22 11:58:39 ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[main,5,main]
java.util.NoSuchElementException: key not found: _PYSPARK_DRIVER_CALLBACK_HOST
    ...
Exception: Java gateway process exited before sending its port number
我正在使用PyCharm和MacOS、Python3.6、Spark 2.3.1


此错误的可能原因是什么?

此错误是版本不匹配的结果。回溯中引用的环境变量(
\u PYSPARK\u DRIVER\u CALLBACK\u HOST
)已在期间删除,并在2.3.1中向后移植到2.3分支

考虑版本信息:

我正在使用PyCharm和MacOS、Python3.6、Spark 2.3.1


看起来您已经安装了2.3.1软件包,但是
SPARK\u HOME
指向了较旧的(2.3.0或更早版本)安装。

我将要呈现的此解决方案也会处理“未找到密钥:\u PYSPARK\u驱动程序\u回调\u主机/Java网关/PYSPARK 2.3.1”错误!!添加到bashrc或/etc/environment或/etc/profile

export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

这应该是最糟糕的。你可以先谢谢我#thumbsup:)

您的代码可能无法访问.bash_配置文件或/etc/profile中的环境变量,请直接将它们放入代码中

import os
import sys

os.environ['SPARK_HOME'] = "/opt/cloudera/parcels/SPARK2/lib/spark2"
os.environ['PYSPARK_SUBMIT_ARGS'] = "--master yarn pyspark-shell" 




sys.path.append(os.path.join(os.environ['SPARK_HOME'], "python"))
sys.path.append(os.path.join(os.environ['SPARK_HOME'], "python/lib/py4j-0.10.6-src.zip"))


try:
    from pyspark import SparkContext
    from pyspark.sql import SparkSession

    from pyspark import SparkConf

    print("success")

except ImportError as e:
    print("error importing spark modules", e)
    sys.exit(1)


我也有类似的错误: java.util.NoSuchElementException:找不到键:\u PYSPARK\u驱动程序\u回调\u主机和 异常:Java网关进程在发送其端口号之前退出

运行命令“export PYTHONPATH=$SPARK\u HOME/python/:$PYTHONPATH”或将其设置为.bashrc解决了该问题


还请检查是否设置了mapr Credentail。

我也遇到了同样的问题,所有上述设置都不适用于我。事实上我已经准备好回家了。最后一个问题是,我只是使用
pip install pyspark
安装了pyspark,而没有验证版本。 在代码内部进行了大量调试后,发现_PYSPARK_驱动程序_回调_主机

anaconda3/lib/python3.7/site-packages/pyspark/java_gateway.py

没有此变量,而pyspark的旧版本有此变量(我使用的是anaconda,因此有此文件路径位置。其他版本的文件的确切位置可能不同)

最后得出结论,这是由于版本不匹配造成的。看起来很愚蠢,但我想这可能会帮助其他人很多调试时间

解决方案是找出为eg 2.3.0安装的spark版本,然后确保安装相同版本的pyspark
pip install pyspark==2.3.0
。在这之后,它就像一个符咒

注意:只有在python中调用
SparkSession.builder.appName
时,才会出现此问题。即使在
pyspark
spark submit
命令的版本不匹配的情况下,它也可以正常工作,这就是为什么我很容易忽略了这可能是由于版本不匹配造成的

pip install pyspark==2.3.0

没问题

谢谢,在将我的spark版本更新到2.3.1之后,它工作得很好。从2.3升级到2.3.1也对我有用。谢谢@user8371915我正在使用python3.5 Spark 2.1.0,并得到相同的错误“java.util.NoSuchElementException:key not found:_PYSPARK_DRIVER_CALLBACK_HOST”。#。bashrc export PYSPARK\u PYTHON=/usr/bin/python3.5 export PYSPARK\u DRIVER\u PYTHON=/usr/bin/python3.5 export SPARK\u HOME=/opt/SPARK-2.1.0-bin-hadoop2.7 export SCALA\u HOME=/opt/SCALA-2.11.8 export HADOOP\u HOME=/opt/HADOOP-2.7.7 export PATH=$PATH:$JAVA\u HOME/bin:$JRE\u HOME/bin:$SCALA\u HOME/bin:$SPARK:$HADOOP HOME\u导出路径PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH有什么想法吗?虽然您的答案与问题的方向一致,但我建议您在代码注释中写更多内容,解释出现错误的原因。