【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。只要环境配置好和版本正确的话就没问题了。

相关推荐
青 春 记 忆4 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO34 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
秋饼6 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
卓怡学长6 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
lemon_sjdk6 小时前
ObjectProperty
java·开发语言·算法
临沂GEO6 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白6 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
hh9506 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
吴声子夜歌6 小时前
Java面试——HBase原理及应用
java·面试·hbase
浪兎兎7 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet