the*_*ter 9 python amazon-emr python-3.x apache-spark pyspark
我正在使用spark over emr并编写一个pyspark脚本,我在尝试时遇到错误
from pyspark import SparkContext
sc = SparkContext()
Run Code Online (Sandbox Code Playgroud)
这是错误
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
Run Code Online (Sandbox Code Playgroud)
我发现这个答案说明我需要导入sparkcontext,但这也不起作用.
小智 19
PySpark最近发布了2.4.0,但是没有与这个新版本重合的稳定版本.尝试降级到pyspark 2.3.2,这对我来说是固定的
编辑:更清楚你的PySpark版本需要与下载的Apache Spark版本相同,否则你可能遇到兼容性问题
使用查看pyspark的版本
pip冻结
小智 6
我刚刚在我的 Windows 设备上安装了全新的 pyspark,并且遇到了完全相同的问题。似乎有帮助的是以下内容:
转到您的系统环境变量并使用以下值向其添加 PYTHONPATH %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-<version>-src.zip:%PYTHONPATH%:,只需检查您的 spark/python/lib 文件夹中的 py4j 版本。
之所以觉得这样可行,是因为我在使用conda安装pyspark的时候,还下载了一个py4j版本,可能与spark的具体版本不兼容,所以好像是打包了自己的版本。
需要设置以下环境来设置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
Run Code Online (Sandbox Code Playgroud)
并 在文件顶部使用findspark:
import findspark
findspark.init()
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5433 次  |  
        
|   最近记录:  |