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 网关错误的主要内容,如果未能解决你的问题,请参考以下文章

spark-submit之使用pyspark

Spyder 中的 tkinter

Spyder IDE中的SQL Server资源管理器窗格

Spyder 中的无效语法

spyder中的opencv从何而来

如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]