您现在的位置是:首页 >技术交流 >【解决】Python中PySpark启动报java gateway异常问题网站首页技术交流

【解决】Python中PySpark启动报java gateway异常问题

流光听风语 2025-02-11 12:01:03
简介【解决】Python中PySpark启动报java gateway异常问题

windows11环境,pycharm中以jdk1.8、pycharm3.9、pyspark3.2.4运行下面这段代码,发现报java网关异常

Python代码如下:

from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
sc = SparkContext(conf=conf)
print(sc.version)
sc.stop()

报错:

用了网上的解决方案,收效甚微,捣鼓了一下,发现是以下两个问题:

  1. 程序没识别出系统的环境变量
  2. jdk与spark版本适配问题

完整解决方案:(以jdk11、Python3.9、pyspark3.2.4为例)

1.安装/更换jdk

spark需要在java环境下运行,jdk11以下的建议还是换成11吧(我试了jdk8的几个最新版本都不行),jdk11以上的请忽略这一步。

jdk下载地址(要注册oracle账号,很容易):Java Archive | Oracle

2.下载,解压

建议选压缩包,觉得麻烦也可以选上面那个.exe傻瓜式安装

3.环境变量设置

解压压缩包后最好放到一个没有中文的目录下,然后配置环境变量,找到电脑设置--系统--高级系统设置

4.新建变量名:JAVA_HOME

变量值:刚刚解压的压缩包,jdk中bin文件夹的上一级目录,例如:

5.path变量新增

找到path变量,添加   %JAVA_HOME%in,如图:

6.winutils.exe文件下载

下载适配windows的Hadoop适配文件,spark3一般适配Hadoop3.x,随便找个版本的搂下来就行,地址:https://github.com/cdarlint/winutils/tree/master/hadoop-3.2.2/bin

网络可能...不会魔法的同学也可以用百度网盘,我也传到了百度网盘上:

百度网盘 请输入提取码        提取码:run3

下好以后随便建一个路径没有中文的文件夹Hadoop,进去再建一个bin文件夹,把这个适配文件放进去,例如:

7.Hadoop环境变量

类似第3第4步,建一个HADOOP_HOME变量,变量值也是bin的上一级目录,path不用新增:

8.代码修改

手动写上环境变量,再次运行,就ok了

from pyspark import SparkConf, SparkContext

import os
# 设置JAVA_HOME和HADOOP_HOME环境变量
os.environ["JAVA_HOME"] = "D:\software\JDK\jdk-11.0.25"
os.environ["HADOOP_HOME"] = "D:\software\Hadoop"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
sc = SparkContext(conf=conf)
print(sc.version)
sc.stop()

运行结果:

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。