我已经安装了python 3.6的pyspark,我正在使用jupyter notebook初始化一个spark会话。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("test").enableHieSupport.getOrCreate()
运行没有任何错误
但是我写了,
df = spark.range(10)
df.show()
它给我一个错误 - >
Py4JError: An error occurred while calling o54.showString. Trace:
py4j.Py4JException: Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
at py4j.Gateway.invoke(Gateway.java:272)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:214)
at java.lang.Thread.run(Thread.java:745)
我不知道为什么我要面对这个问题。
如果我这样做,
from pyspark import SparkContext
sc = SparkContext()
print(sc.version)
'2.1.0'
答案 0 :(得分:8)
我现在很高兴,因为我和我的pyspark一直有同样的问题,我找到了“解决方案”。就我而言,我在Windows 10上运行。经过Google的多次搜索后,我找到了设置所需环境变量的正确方法:
PYTHONPATH=$SPARK_HOME$\python;$SPARK_HOME$\python\lib\py4j-<version>-src.zip
Py4J源包的版本在Spark版本之间发生变化,因此,检查Spark中的内容并相应地更改占位符。
有关此流程的完整参考,请查看此站点:how to install spark locally
答案 1 :(得分:2)
我只需要将SPARK_HOME
环境变量设置为spark的位置。我在我的~/.bashrc
文件中添加了以下行。
# SPARK_HOME
export SPARK_HOME="/home/pyuser/anaconda3/lib/python3.6/site-packages/pyspark/"
我在不同的环境中使用不同版本的spark,我按照本教程(link)为每个conda环境创建环境变量。
答案 2 :(得分:2)
如果您在anancoda中使用pyspark,请在运行代码之前添加以下代码来设置SPARK_HOME:
import os
import sys
spark_path = r"spark-2.3.2-bin-hadoop2.7" # spark installed folder
os.environ['SPARK_HOME'] = spark_path
sys.path.insert(0, spark_path + "/bin")
sys.path.insert(0, spark_path + "/python/pyspark/")
sys.path.insert(0, spark_path + "/python/lib/pyspark.zip")
sys.path.insert(0, spark_path + "/python/lib/py4j-0.10.7-src.zip")
答案 3 :(得分:1)
以下是使用Jupyter为我工作的工具的步骤和组合:
1)安装Java 1.8
2)在Java的PATH中设置环境变量,例如JAVA_HOME = C:\Program Files\Java\javasdk_1.8.241
3)使用Conda Install安装PySpark 2.7(3.0不适用于我,它出现错误,要求我匹配PySpark和Spark版本...搜索PySpark 2.7的Conda安装代码
4)安装Spark 2.4(3.0对我不起作用)
5)将环境变量中的SPARK_HOME设置为Spark下载文件夹,例如SPARK_HOME = C:\Users\Spark
6)将环境变量中的HADOOP_HOME设置为Spark下载文件夹,例如HADOOP_HOME = C:\Users\Spark
7)下载winutils.exe
,并解压缩Spark.tgz
8)在Conda中安装FindSpark,在Anaconda.org网站上搜索并在Jupyter笔记本中安装(这是避免出错的最重要步骤之一)
9)重新启动计算机,确保应用了环境变量
10)您可以通过在Windows命令提示符下键入以下内容来验证是否应用了环境变量:
C:\> echo %SPARK_HOME%
这应该显示在Windows 10的“高级设置”中添加到Windows PATH的环境变量
答案 4 :(得分:0)
我认为spark.range
应该返回一个RDD对象。因此,show
不是您可以使用的方法。请改用collect
或take
。
如果您想使用spark.range
,还可以将sc.range
替换为show
。
答案 5 :(得分:0)
对我来说
import findspark
findspark.init()
import pyspark
解决了问题
答案 6 :(得分:0)
我有一个类似的Constructor [...] does not exist
问题。然后我发现 PySpark 软件包的版本与服务器上安装的 Spark (2.4.4)不同。最后,我通过重新安装相同版本的 PySpark 解决了该问题:
pip install pyspark==2.4.4
答案 7 :(得分:0)
import findspark
findspark.init("path of SparkORHadoop ")
from pyspark import SparkContext
您首先需要设置findspark.init() 然后您可以导入pyspark
答案 8 :(得分:0)
%env PYTHONPATH=%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j--src.zip:%PYTHONPATH%
!pip install findspark
import findspark
!pip install pyspark==2.4.4
import pyspark
findspark.init()
from pyspark import SparkConf, SparkContext
sc = pyspark.SparkContext.getOrCreate()
您必须添加路径并为Apache Spark添加必要的库。
答案 9 :(得分:0)
在使用PyCharm并在Windows 10的Python控制台中执行代码时,我遇到了相同的错误,但是,从终端启动pyspark时,我能够运行相同的代码而没有错误。在尝试了许多搜索的解决方案之后,Pycharm Python Console错误的解决方案是以下两个博客文章{{3}中所有环境变量(我分别为用户和系统设置)和PyCharm设置步骤的组合。 }和setup pyspark locally。