【问题标题】:PySpark: Not able to create SparkSession.(Java Gateway Error)PySpark:无法创建 SparkSession。(Java 网关错误)
【发布时间】:2019-08-20 20:41:23
【问题描述】:

我已经在 Windows 上安装了 PySpark,直到昨天都没有问题。我正在使用windows 10PySpark version 2.3.3(Pre-build version)java version "1.8.0_201"。昨天当我尝试创建一个火花会话时,我遇到了以下错误。

Exception                                 Traceback (most recent call last)
<ipython-input-2-a9ef4ac1a07d> in <module>
----> 1 spark = SparkSession.builder.appName("Hello").master("local").getOrCreate()

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\sql\session.py in getOrCreate(self)
    171                     for key, value in self._options.items():
    172                         sparkConf.set(key, value)
--> 173                     sc = SparkContext.getOrCreate(sparkConf)
    174                     # This SparkContext may be an existing one.
    175                     for key, value in self._options.items():

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\context.py in getOrCreate(cls, conf)
    361         with SparkContext._lock:
    362             if SparkContext._active_spark_context is None:
--> 363                 SparkContext(conf=conf or SparkConf())
    364             return SparkContext._active_spark_context
    365 

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\context.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls)
    127                     " note this option will be removed in Spark 3.0")
    128 
--> 129         SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
    130         try:
    131             self._do_init(master, appName, sparkHome, pyFiles, environment, batchSize, serializer,

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\context.py in _ensure_initialized(cls, instance, gateway, conf)
    310         with SparkContext._lock:
    311             if not SparkContext._gateway:
--> 312                 SparkContext._gateway = gateway or launch_gateway(conf)
    313                 SparkContext._jvm = SparkContext._gateway.jvm
    314 

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\java_gateway.py in launch_gateway(conf)
     44     :return: a JVM gateway
     45     """
---> 46     return _launch_gateway(conf)
     47 
     48 

C:\spark-2.3.3-bin-hadoop2.7\python\pyspark\java_gateway.py in _launch_gateway(conf, insecure)
    106 
    107             if not os.path.isfile(conn_info_file):
--> 108                 raise Exception("Java gateway process exited before sending its port number")
    109 
    110             with open(conn_info_file, "rb") as info:

Exception: Java gateway process exited before sending its port number

我确实检查了 github 上的 pyspark 问题以及相同的 stackoverflow 答案,但问题没有解决。

我确实尝试了以下方法:

1.) 尝试卸载、安装和更改 java 安装目录。目前,我的 java 安装目录是 C:/Java/Pyspark: Exception: Java gateway process exited before sending the driver its port number

2.) 尝试设置 PYSPARK_SUBMIT_ARGS,但没有帮助。

请建议我可能的解决方案。

【问题讨论】:

  • 你添加了 winutil.exe 吗? wiki.apache.org/hadoop/WindowsProblems
  • 是的,我在文件夹 C:\Hadoop\bin 中有 winutils.exe 和我的 HADOOP_HOME = C:\Hadoop
  • 是的,我确实检查了链接......我面临的问题与安装无关......我能够安装和使用它......问题是在使用 pyspark 之后几天来我突然遇到上述错误,我无法弄清楚如何解决它......我现在无法创建新的 SparkSession 或 SparkContext。
  • JAVA_HOME 设置吗?

标签: java apache-spark hadoop pyspark apache-spark-standalone


【解决方案1】:

请确保 JAVA_HOME 环境变量不应包含任何空格,否则可能会引发错误,我删除了它,它对我来说就像一个魅力。 这是在 python 中检查您的 JAVA_HOME 的简短代码

导入操作系统 打印(os.environ['JAVA_HOME'])

【讨论】:

  • environ 拼写错误。
【解决方案2】:

我认为您需要再次卸载 java 和 pyspark,然后重新安装 java 和 pyspark。

pip install pyspark

然后转到系统>高级系统设置>环境变量>然后在用户变量>路径和系统变量>路径中编辑java home。

【讨论】:

  • 我可以卸载并安装 pyspark 和 java,然后它应该可以正常工作。但这不是问题的解决方案,因为它可能在未来再次发生。这是我第二次面临这个问题。我确实是第一次安装和卸载。
【解决方案3】:

查看导致错误的代码后,我发现这些可能是问题所在。

  1. 检查系统中是否定义了 TEMP 的环境变量。 enter image description here

如果没有,请定义一个。

  1. 如果定义了 TEMP,请确保该文件夹“确实”存在并且具有完全访问权限。

基本上,引发异常的代码正在寻找一个文件夹以在您的系统上创建临时文件。您必须确保它们在场。

【讨论】:

  • 我在系统中有TEMP 环境变量,并且路径存在并具有完全访问权限。仍然面临这个问题。
猜你喜欢
  • 2018-11-26
  • 2019-05-21
  • 2020-11-13
  • 2019-08-06
  • 1970-01-01
  • 2018-07-17
  • 2021-09-21
  • 2017-01-24
  • 1970-01-01
相关资源
最近更新 更多