bvk*_*ear 8 python python-3.x pyspark
我当前在使用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()
Run Code Online (Sandbox Code Playgroud)
失败并显示以下错误:
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行,在orOrCreate SparkContext(conf = conf或SparkConf())文件“ C:\ Tools \ Anaconda3 \ lib \ site-packages \ pyspark \ context.py”,第118行,在初始 conf,jsc,profiler_cls中)文件“ C:\ Tools \ Anaconda3 \ lib \ _do_init self._encryption_enabled = self._jvm.PythonUtils.getEncryptionEnabled(self._jsc)文件中的“ site-packages \ pyspark \ context.py”,第195行,文件“ C:\ Tools \ Anaconda3 \ lib \ site-packages \ py4j \ java_gateway 。py”,第1487行,在getattr中 “ {0}。{1}在JVM中不存在”。format(self._fqn,名称)) py4j.protocol.Py4JError:org.apache.spark.api.python.PythonUtils.getEncryptionEnabled在JVM中不存在
有人对这里可能存在的潜在问题有任何想法吗?
在此感谢任何帮助或反馈。谢谢!
bvk*_*ear 20
如上所述,在初始化 SparkContext 时,jvm 错误中不存在 @pyspark 错误,添加PYTHONPATH环境变量(值为:
%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.zip:%PYTHONPATH%,
- 只需检查文件夹中的py4j版本spark/python/lib)有助于解决此问题。
sm7*_*sm7 18
使用 findspark 有望解决问题:
安装 findspark
$pip install findspark
在你的代码中使用:
import findspark
findspark.init()
Run Code Online (Sandbox Code Playgroud)
您可以选择在init上面的方法中指定“/path/to/spark” ;findspark.init("/path/to/spark")
mou*_*afa 10
解决方案#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
Run Code Online (Sandbox Code Playgroud)
如果您在 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%
Run Code Online (Sandbox Code Playgroud)
设置环境变量后,重新启动工具或命令提示符。
解决方案#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")
Run Code Online (Sandbox Code Playgroud)
解决方案#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\
Run Code Online (Sandbox Code Playgroud)
到
C:\Programdata\anaconda3\Lib\site-packages\.
Run Code Online (Sandbox Code Playgroud)
并且,从以下位置复制pyspark文件夹:
C:\apps\opt\spark-3.0.0-bin-hadoop2.7\python\lib\pyspark.zip\
Run Code Online (Sandbox Code Playgroud)
到
C:\Programdata\anaconda3\Lib\site-packages\
Run Code Online (Sandbox Code Playgroud)
有时,您可能需要重新启动系统以影响 eh 环境变量。
归功于:https : //sparkbyexamples.com/pyspark/pyspark-py4j-protocol-py4jerror-org-apache-spark-api-python-pythonutils-jvm/
| 归档时间: |
|
| 查看次数: |
4143 次 |
| 最近记录: |