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

相关推荐
懂点Tech2 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
comedate3 小时前
SMLib 的 Examples 导读:PyAPI / SM_API / SMLib 三组示例怎么读
python·cad·smlib·examples·sm_api
云和数据.ChenGuang3 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试3 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
万化冥合4 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
车软学堂4 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝4 小时前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静4 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists5 小时前
《crafting interpreters》阅读笔记:p45-p45
python