【python】pyspark.errors.exceptions.base.PySparkRuntimeError [JAVA_GATEWAY_EXITED] Java gateway proce

pyspark.errors.exceptions.base.PySparkRuntimeError: JAVA_GATEWAY_EXITED Java gateway process exited before sending its port number这个错误通常是由于Java,python,spark,pyspark的环境配置问题和版本问题。

版本兼容性

在开始配置环境之前建议检查一下版本。

如果版本不符合上述的话也先按下面流程下来看看能否解决,如果还是不能,则考虑更换版本,以我为例,起初版本为(python3.9,Java17,spark2.4和pyspark3.5),更换(python3.9,Java8即jdk-1.8,spark和pyspark都是3.4.3)版本后环境配置成功。凡事不可一概而论,依照自己本身版本进行更换即可。

Java环境问题

Java建议用Java8(jdk-1.8),在cmd中输入,在使用这个的前提是配置好了JAVA_HOME。

复制代码
java -version

如果没有配置好的话:此电脑空白处->右键->属性->高级系统设置->高级->环境变量

选择系统变量,新建JAVA_HOME,变量值填Java的安装目录

实在找不到Java的安装目录的话就先在系统变量里面的Path里面新建一个C:WindowsSystem32

这样就可以在cmd中输入

复制代码
where java

只需要到jdk的根目录就可以了,我的jdk根目录即C:Program FilesJavajdk-1.8

添加完JAVA_HOME后,在Path中添加%JAVA_HOME%in

到此为止,Java的环境就配置好了。

spark环境配置

同理,在下载spark包后将spark解压,建议下载3.x版本。(pip直接安装pyspark问题无法解决,还是直接下载spark包好)

我这个是3.4的下载,下载完后解压后放到合适的文件夹下。

Apache Download Mirrors

同理配置SPARK_HOME环境变量

然后在Path中添加

pyspark环境配置

PYSPARK_PYTHON应该指向Python 解释器的路径。PYSPARK_PYTHON 环境变量用于指定 PySpark 应该使用的 Python 解释器的路径。这在使用 PySpark 时非常重要,尤其是在有多个 Python 版本或虚拟环境的情况下

用where python得到路径

同时将sparkpython里面的pyspark复制一份到python的libsite-packages中去

这里还是要注意版本问题,spark和pyspark版本建议一样

这里我的spark版本是3.4.3,也对pyspark版本进行改变(原来是3.5)

复制代码
pip install pysharp==3.4.3

而后再检查一下pyspark版本,正确

随后配置PYSPARK_PYTHON,注意要选择全局安装的python路径

同理如果没有配置python环境的话也可以在path中配置python环境

其实上面两个Java的环境变量语句的作用是一样的,一个是具体的,一个是使用环境变量。很多配置都可以以此类推。

测试

设置好后在cmd中输入代码查看环境配置

复制代码
echo %SPARK_HOME%
echo %PYSPARK_PYTHON%
echo %JAVA_HOME%

直接输入

复制代码
spark-shell

出现这个则配置成功

复制代码
pyspark

在python中简单测试

复制代码
from pyspark.sql import SparkSession

spark = SparkSession.builder 
.appName("TestApp") 
.getOrCreate()

data = [("Alice", 1), ("Bob", 2)]
df = spark.createDataFrame(data, ["Name", "Id"])
df.show()

输出如下内容则pyspark配置成功

总结

综上所述,安装Java8,再安装合适版本的spark,spark版本和pyspark版本一致更不会出错,配置好JAVA_HOME,SPARK_HOME,PYSPARK_PYTHON。只要环境配置好和版本正确的话就没问题了。

相关推荐
benchmark_cc6 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
阿维的博客日记7 小时前
MultipartFile 是不是表示仅仅是一个分片?
java·后端·spring·multipartfile
程序员无隅7 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
Python+997 小时前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
二炮手亮子8 小时前
浅记java线程池
java·开发语言
一路向北North8 小时前
Spring Security OAuth2.0(23):分布式系统授权-转发明文给微服务
java·spring·微服务
dunge20268 小时前
2026年7月最新ChatGPT Plus / Pro 与 Codex:当 AI Agent 最新5.6版本来袭,必须理解事务、幂等与补偿
开发语言·人工智能·python
专注_每天进步一点点8 小时前
SLB(绑定弹性公网ip)-gateway-业务pod,gateway上出现reset by peer,业务pod上没有reset by peer
服务器·tcp/ip·gateway
爱吃牛肉的大老虎9 小时前
rust基础之环境搭建
java·开发语言·rust
小白学大数据10 小时前
两周完成爬虫技术栈升级:Scrapy 迁移 Crawlo 的路径与取舍
爬虫·python·scrapy