![](/img/trans.png)
[英]Error when importing Sparkling Water (H2O) pipeline in Apache Spark: py4j.protocol.Py4JError
[英]py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
我目前在 JRE: 1.8.0_181, Python: 3.6.4, spark: 2.3.2
我正在嘗試在 Python 中執行以下代碼:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Basics').getOrCreate()
這失敗並出現以下錯誤:
spark = SparkSession.builder.appName('Basics').getOrCreate() 回溯(最近一次調用):文件“”,第 1 行,文件“C:\\Tools\\Anaconda3\\lib\\site-packages\\pyspark\\sql \\session.py”,第 173 行,在 getOrCreate sc = SparkContext.getOrCreate(sparkConf) 文件“C:\\Tools\\Anaconda3\\lib\\site-packages\\pyspark\\context.py”,第 349 行,在 getOrCreate SparkContext(conf= conf 或 SparkConf()) 文件 "C:\\Tools\\Anaconda3\\lib\\site-packages\\pyspark\\context.py", line 118, in init conf, jsc, profiler_cls) 文件 "C:\\Tools\\Anaconda3\\lib\\ site-packages\\pyspark\\context.py”,第 195 行,在 _do_init self._encryption_enabled = self._jvm.PythonUtils.getEncryptionEnabled(self._jsc) 文件“C:\\Tools\\Anaconda3\\lib\\site-packages\\py4j\\java_gateway .py”,第 1487 行,在getattr 中“{0}.{1} 在 JVM 中不存在”.format(self._fqn, name)) py4j.protocol.Py4JError: org.apache.spark.api.python。 JVM 中不存在 PythonUtils.getEncryptionEnabled
任何人都知道這里可能存在的潛在問題是什么?
感謝這里的任何幫助或反饋。 謝謝!
如上所述, 在初始化 SparkContext 時, jvm 錯誤中不存在 @pyspark 錯誤,添加PYTHONPATH
環境變量(值為:
%SPARK_HOME%\\python;%SPARK_HOME%\\python\\lib\\py4j-<version>-src.zip:%PYTHONPATH%
,
- 只需檢查您的spark/python/lib
文件夾中的py4j
版本)有助於解決此問題。
使用 findspark 有望解決問題:
安裝 findspark
$pip install findspark
在你的代碼中使用:
import findspark
findspark.init()
您可以選擇在上面的init
方法中指定“/path/to/spark”; findspark.init("/path/to/spark")
解決方案#1。 檢查您的環境變量
由於環境變量設置不正確,您會收到“py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled 在 JVM 中不存在”。
檢查您是否在 .bashrc 文件上正確設置了環境變量。 對於 Unix 和 Mac,變量應該如下所示。 您可以在主路徑上找到 .bashrc 文件。
注意:請勿復制並粘貼以下行,因為您的 Spark 版本可能與下面提到的版本不同。
export SPARK_HOME=/opt/spark-3.0.0-bin-hadoop2.7
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH
export PATH=$SPARK_HOME/bin:$SPARK_HOME/python:$PATH
如果您在 Windows 上運行,請打開環境變量窗口,然后在下面添加/更新。
SPARK_HOME => /opt/spark-3.0.0-bin-hadoop2.7
PYTHONPATH => %SPARK_HOME%/python;%SPARK_HOME%/python/lib/py4j-0.10.9-src.zip;%PYTHONPATH%
PATH => %SPARK_HOME%/bin;%SPARK_HOME%/python;%PATH%
設置環境變量后,重新啟動工具或命令提示符。
解決方案#2。 使用 findspark
通過運行 $pip install findspark 安裝 findspark 包並將以下幾行添加到您的 pyspark 程序中
import findspark
findspark.init()
# you can also pass spark home path to init() method like below
# findspark.init("/path/to/spark")
解決方案#3。 將 pyspark 和 py4j 模塊復制到 Anaconda lib
有時在更改/升級 Spark 版本后,由於 pyspark 版本和 anaconda 庫中可用的 pyspark 版本不兼容,您可能會收到此錯誤。 為了糾正它
注意:從 zip 文件中復制指定的文件夾,並確保按照開頭所述正確設置環境變量。
從以下位置復制py4j文件夾:
C:\apps\opt\spark-3.0.0-bin-hadoop2.7\python\lib\py4j-0.10.9-src.zip\
到
C:\Programdata\anaconda3\Lib\site-packages\.
並且,從以下位置復制pyspark文件夾:
C:\apps\opt\spark-3.0.0-bin-hadoop2.7\python\lib\pyspark.zip\
到
C:\Programdata\anaconda3\Lib\site-packages\
有時,您可能需要重新啟動系統以影響 eh 環境變量。
歸功於: https : //sparkbyexamples.com/pyspark/pyspark-py4j-protocol-py4jerror-org-apache-spark-api-python-pythonutils-jvm/
在 Windows 上遇到了同樣的問題,我發現我的 Python 的py4j和pyspark版本與預期的 spark 版本不同。 通過將zip 中的 python 模塊復制來解決: py4j-0.10.8.1-src.zip和pyspark.zip (在spark-3.0.0-preview2-bin-hadoop2.7\\python\\lib 中找到)到C:\\Anaconda3\\ Lib\\site-packages 。
我最近遇到了這個問題。
錯誤是 - 我正在打開普通的 jupyter 筆記本。
始終打開Anaconda Prompt -> 輸入 'pyspark' -> 它會自動為你打開 Jupyter notebook 。
之后,您將不會收到此錯誤。
如果使用 pycharm - 下載 spark 2.4.4
- 設置/項目結構/addcontent root/在spark.2.4.4/python/lib中添加py4j.0.10.8.1.zip ve pyspark.zip
我有同樣的問題。 在我使用 spark 2.4.6 的情況下,安裝與 spark 版本相同的 pyspark 2.4.6 或 2.4.x,解決了問題,因為 pyspark 3.0.1( pip install pyspark
將安裝最新版本)提出了問題。
你只需要安裝一個舊版本的 pyspark 。這個版本有效“pip install pyspark==2.4.7”
如果您安裝了 pyspark 3.1 並且您的本地 spark 是 2.4,則可能會發生這種情況(我的意思是版本不兼容)在我的情況下,為了克服這個問題,我卸載了 spark 3.1 並切換到 pip install pyspark 2.4。
我的建議是在這里檢查版本不兼容問題以及其他答案。
如果像我一樣問題發生在你更新了兩者之一之后你不知道 Pyspark 和 Spark 版本需要匹配,正如 Pyspark PyPi 存儲庫所說:
注意:如果您將它與 Spark 獨立集群一起使用,您必須確保版本(包括次要版本)匹配,否則您可能會遇到奇怪的錯誤。
因此升級/降級 Pyspark/Spark 的版本以匹配解決問題。
要升級 Spark,請遵循: https : //sparkbyexamples.com/pyspark/pyspark-py4j-protocol-py4jerror-org-apache-spark-api-python-pythonutils-jvm/
如果在本地 ( https://github.com/awslabs/aws-glue-libs ) 中使用 Spark 和 AWS Glue 庫,請確保 Spark、PySpark 和 AWS Glue 庫的版本都正確對齊。 截至目前,當前有效的組合是:
aws-glue-libs 分支 | 膠版 | 星火版 |
---|---|---|
膠水-0.9 | 0.9 | 2.2.1 |
膠水-1.0 | 1.0 | 2.4.3 |
膠水2.0 | 2.0 | 2.4.3 |
掌握 | 3.0 | 3.1.1 |
如果從以前的答案中還沒有清楚,您的 pyspark 包版本必須與安裝的 Apache Spark 版本相同。
例如,我使用 Ubuntu 和 PySpark 3.2。 在環境變量(bashrc)中:
export SPARK_HOME="/home/ali/spark-3.2.0-bin-hadoop3.2"
export PYTHON_PATH=$SPARK_HOME/python:$PYTHON_PATH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.