Pyspark:Spyder 中的 SparkContext 定义引发 Java 网关错误
Posted
技术标签:
【中文标题】Pyspark:Spyder 中的 SparkContext 定义引发 Java 网关错误【英文标题】:Pyspark: SparkContext definition in Spyder throws Java gateway error 【发布时间】:2017-05-26 07:46:39 【问题描述】:我想将 Spyder 与 pyspark (spark-2.1.1) 一起使用,但我无法修复一个相当令人沮丧的 Java 错误。激活 conda 环境(Python 版本为 3.5.3)后,我从 Windows 10 的命令行启动 spyder。这是我的代码:
import pyspark
sc = pyspark.SparkContext("local")
file = sc.textFile("C:/test.log")
words = file.flatMap(lambda line : line.split(" "))
words.count()
当我尝试定义 sc
时,我收到以下错误:
File "D:\spark-2.1.1-bin-hadoop2.7\python\pyspark\java_gateway.py", line 95, in launch_gateway
raise Exception("Java gateway process exited before sending the driver its port number")
Exception: Java gateway process exited before sending the driver its port number
为了完整起见:
如果我在激活 conda 环境后从命令行运行pyspark
,它可以正常工作并正确执行字数统计任务。
如果我从 Windows 10 的“开始”菜单启动 Spyder 应用程序桌面,一切正常(但我认为在这种情况下我无法从我的 conda 环境加载正确的 python 模块)。
相关的环境变量好像没问题:
回显 %SPARK_HOME%
D:\spark-2.1.1-bin-hadoop2.7
回显 %JAVA_HOME%
C:\Java\jdk1.8.0_121
回显 %PYTHONPATH%
D:\spark-2.1.1-bin-hadoop2.7\python;D:\spark-2.1.1-bin-hadoop2.7\python\lib\py4j-0.10.4-src.zip; D:\spark-2.1.1-bin-hadoop2.7\python\lib; C:\Users\user\Anaconda3
我已经尝试过here 提出的解决方案,但对我没有任何帮助。非常感谢任何建议!
【问题讨论】:
嗨@ChiaraM 你能详细告诉我你的第一点吗?抱歉,我是 pyspark 的新手,并尝试做与您相同的操作,但遇到了与您相同的错误。 【参考方案1】:由于 1) 有效,最好使用 Spyder 中的 conda 环境。
在首选项中转到“Python 解释器”部分并从“默认(即与 Spyder 的相同)”切换到“使用以下 Python 解释器”。
如果你的环境叫spark_env
,Anaconda安装在C:\Program Files\Continnum\Anaconda
下,那么这个环境对应的python配置文件就是C:\Program Files\Continnum\Anaconda\envs\spark_env\python.exe
。
此更改后 Spyder startet 中的 python 控制台将在您的 conda 环境中(请注意,这不适用于 IPyhton)。
要检查环境变量,您可以使用 python 代码来确保这些是您的脚本看到的相同变量:
from os import environ
print(environ['SPARK_HOME'])
print(environ['JAVA_HOME'])
try:
print(environ['PYSPARK_SUBMIT_ARGS'])
except:
print("no problem with PYSPARK_SUBMIT_ARGS") # https://github.com/ContinuumIO/anaconda-issues/issues/1276#issuecomment-277355043
希望对您有所帮助。
【讨论】:
非常感谢,您的建议解决了问题。 嗨@daten-kieker 我也遇到了与这个问题所有者相同的错误,我已经尝试按照您提到的方式进行操作。我仍然遇到同样的错误。你能帮我解决这个问题吗:( 嗨@JKC,您的设置和 ChiaraM 描述的步骤的结果是否相同?小测试脚本的结果是什么? 是的@daten-kieker 我在运行测试脚本时得到这个“PYSPARK_SUBMIT_ARGS 没有问题” @JKC 第一行的输出是什么(环境变量 SPARK_HOME 和 JAVA_HOME)?以上是关于Pyspark:Spyder 中的 SparkContext 定义引发 Java 网关错误的主要内容,如果未能解决你的问题,请参考以下文章