PySpark:无法创建SparkSession。(Java Gateway Error)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PySpark:无法创建SparkSession。(Java Gateway Error)相关的知识,希望对你有一定的参考价值。

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

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.7pythonpysparksqlsession.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.7pythonpysparkcontext.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.7pythonpysparkcontext.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.7pythonpysparkcontext.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.7pythonpysparkjava_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.7pythonpysparkjava_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,但没有帮助。

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

答案

我想你需要再次卸载java和pyspark,然后重新安装java和pyspark。

pip install pyspark

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

另一答案

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

import os print(os.environ ['JAVA_HOME'])

另一答案

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

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

如果没有,请定义一个。

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

基本上,引发异常的代码是查找用于在系统上创建临时文件的文件夹。你必须确保他们在场。

以上是关于PySpark:无法创建SparkSession。(Java Gateway Error)的主要内容,如果未能解决你的问题,请参考以下文章

创建 SparkSession 的 Spark 3.0.0 错误:pyspark.sql.utils.IllegalArgumentException:<exception str() fail

pyspark 2.4 无法从 sql 命令创建表需要 Hive 支持才能创建 Hive TABLE

在 pyspark sparksession 中检查 Hive 中是不是存在表

`pyspark.sql.SparkSession.sql` 和 `SQLContext.read.format()` 有啥区别?

带有架构的 pyspark.sql SparkSession load() :架构中的非字符串类型字段使所有值都为空

PySpark数据分析基础:pyspark.sql.SparkSession类方法详解及操作+代码展示