Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 初始化SparkContext时jvm错误中不存在pyspark错误_Python_Python 3.x_Apache Spark_Pyspark_Amazon Emr - Fatal编程技术网

Python 初始化SparkContext时jvm错误中不存在pyspark错误

Python 初始化SparkContext时jvm错误中不存在pyspark错误,python,python-3.x,apache-spark,pyspark,amazon-emr,Python,Python 3.x,Apache Spark,Pyspark,Amazon Emr,我正在使用spark over emr并编写pyspark脚本, 我在尝试时遇到了一个错误 from pyspark import SparkContext sc = SparkContext() 这就是错误所在 File "pyex.py", line 5, in <module> sc = SparkContext() File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 118

我正在使用spark over emr并编写pyspark脚本, 我在尝试时遇到了一个错误

from pyspark import SparkContext
sc = SparkContext()
这就是错误所在

File "pyex.py", line 5, in <module>
    sc = SparkContext()   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 118, in __init__
    conf, jsc, profiler_cls)   File "/usr/local/lib/python3.4/site-packages/pyspark/context.py", line 195, in _do_init
    self._encryption_enabled = self._jvm.PythonUtils.getEncryptionEnabled(self._jsc)   File "/usr/local/lib/python3.4/site-packages/py4j/java_gateway.py", line 1487, in __getattr__
    "{0}.{1} does not exist in the JVM".format(self._fqn, name)) py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
文件“pyex.py”,第5行,在
sc=SparkContext()文件“/usr/local/lib/python3.4/site packages/pyspark/context.py”,第118行,在__
conf,jsc,profiler_cls)文件“/usr/local/lib/python3.4/site packages/pyspark/context.py”,第195行,在
self._encryption_enabled=self._jvm.PythonUtils.getencryptionnabled(self._jsc)文件“/usr/local/lib/python3.4/site packages/py4j/java_gateway.py”,第1487行,在__
JVM中不存在“{0}.{1}”。JVM中不存在格式(self._fqn,name))py4j.protocol.Py4JError:org.apache.spark.api.PythonUtils.getEncryptionEnabled

我发现答案是我需要导入sparkcontext,但这也不起作用。

我刚刚在Windows设备上安装了一个新的pyspark,并且遇到了完全相同的问题。似乎有帮助的是:

转到您的系统环境变量,并使用以下值向其添加PYTHONPATH:
%SPARK\u HOME%\python;%SPARK\u HOME%\python\lib\py4j--src.zip:%PYTHONPATH%
,只需检查SPARK/python/lib文件夹中的py4j版本即可


我之所以认为这是可行的,是因为当我使用conda安装pyspark时,它还下载了一个py4j版本,该版本可能与spark的特定版本不兼容,因此它似乎打包了自己的版本

PySpark最近发布了2.4.0,但是没有稳定的版本与这个新版本相一致。尝试降级到pyspark 2.3.2,这为我修复了它

编辑:为了更清楚,您的PySpark版本需要与下载的Apache Spark版本相同,否则您可能会遇到兼容性问题

使用检查pyspark的版本

皮普冷冻


在程序末尾使用SparkContext().stop()停止这种情况。

以下步骤解决了我的问题: -将其降级至2.3.2 -正在将PYTHONPATH添加为系统环境变量,其值为
%SPARK\u HOME%\python;%SPARK\u HOME%\python\lib\py4j--src.zip:%PYTHONPATH%

注意:在上面给出的值中使用正确的版本,不要完全复制。

不要编辑环境变量,只需确保Python环境(带有pyspark的环境)与Spark文件夹中\Python\lib\dictionary中的zip文件具有相同的py4j版本即可。例如,我的系统上的d:\Programs\Spark\python\lib\py4j-0.10.7-src.zip,用于Spark 2.3.2。它是作为Spark存档文件的一部分提供的py4j版本。

尝试在文件顶部添加以下内容:

import findspark
findspark.init()

请看

简单地说,这是关于python和java的,因为必须说出来的媒介(py4j)是不同的,就是这样。我有同样的问题,上面所有的答案都是有效的,如果你正确使用它们,它们会起作用,要么你定义一个系统变量来告诉它们应该使用哪一个py4j,或者您可以进行一些取消安装和重新安装,以便每个人都在同一页面上。

您需要设置以下环境来设置Spark路径和Py4j路径。
例如~/.bashrc中:

export SPARK_HOME=/home/hadoop/spark-2.1.0-bin-hadoop2.7
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
export PATH=$SPARK_HOME/bin:$SPARK_HOME/python:$PATH
并在文件顶部使用:

import findspark
findspark.init()

当我从anaconda命令提示符下下载新版本的pip安装时,我也遇到了同样的问题

使用代码文件顶部时:
进口金融园 findspark.init(“c:\spark”)


此代码解决了我的问题。

尝试安装spark 2.4.5版本,并将spark home path设置为此版本。即使我在更改版本后也遇到了这个问题,它也为我解决了。

你关闭了SparkContext吗?另外,你能展示完整的代码吗?这是在我有机会使用它之前发生的。我正在创建它并得到了错误。如果您执行
print(conf)
,您会得到什么?请尝试
sc=SparkContext(conf)
,他们当时发布了PySpark 2.4.0的哪个版本?当我发布这篇文章时,没有2.4.0可供下载,只有2.3.2。只要pyspark版本==apachesparks,您就应该是好的。我会更新帖子这让我很困惑。当我
pip安装pyspark==2.4.0
或任何版本时,它会在我的站点libs中安装Spark的一个版本。我的用例是尝试在流媒体包中使用KafkaUtils,而不安装本地Spark。这样做仍然会导致py4j网关在尝试加载类时出错。python PypSpark安装附带的Spark版本如何在不涉及任何其他内容的情况下尝试使用它?导入findspark在python 3.7中不存在,您能否再次检查我正在尝试使用anaconda Navigator的右侧@mugurkt使用导入选项。根据您的回答,我不得不删除了不兼容的py4j版本(最初通过anaconda navigator安装)附带的pyspark,然后通过命令行提示符用“pip install pyspark”重新安装了pyspark,现在它对我来说很好用。当然,对于那些使用*nix的用户,这转换为:export PYTHONPATH=$SPARK\u HOME\python:$SPARK\u HOME\python\lib\py4j--src.zip:$PYTHONPATH