初始化SparkContex时,jvm错误中不存在pyspark错误

2024-05-02 03:08:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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

我找到了this答案,指出我需要导入sparkcontext,但这也不起作用。


Tags: inpyselflibpackagesusrlocalcontext
3条回答

尝试在文件顶部添加此项:

import findspark
findspark.init()

https://github.com/minrk/findspark

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

转到系统环境变量并使用以下值向其中添加PYTHONPATH:%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.zip:%PYTHONPATH%,只需检查spark/python/lib文件夹中的py4j版本。

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

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

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

使用检查pyspark的版本

pip freeze

相关问题 更多 >