Pyspark:Spyder中的SparkContext定义抛出Java网关错误

时间:2017-05-26 07:46:40

标签: python apache-spark pyspark spyder

我想将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

为了完整起见:

  1. 如果我在激活conda环境后从命令行运行pyspark,它可以正常执行单词计数任务。

  2. 如果我从Windows 10的“开始”菜单启动 Spyder App Desktop ,一切正常(但我认为在这种情况下我无法从我的conda环境加载正确的python模块)。 / p>

  3. 相关的环境变量似乎没问题:

    回显%SPARK_HOME%

    d:\火花2.1.1彬hadoop2.7

    echo%JAVA_HOME%

    C:\爪哇\ jdk1.8.0_121

    echo%PYTHONPATH%

    d:\火花2.1.1彬hadoop2.7 \蟒; d:\火花2.1.1彬hadoop2.7 \蟒\ lib中\ py4j-0.10.4-src.zip; d:\火花2.1.1彬hadoop2.7 \ python的\ lib中; C:\用户\用户\ Anaconda3

  4. 我已经尝试过提出的解决方案here,但没有任何方法可以帮助我。非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

由于1)正在运行,最好在Spyder中使用conda环境。

在首选项中,转到" Python解释器"部分并切换到"默认(即与Spyder'相同)" to"使用以下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

希望有所帮助。