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

相关推荐
SimonKing几秒前
文档杂乱怎么查找:用 Papra 搭一个极简文档管理系统
java·后端·程序员
captain3761 分钟前
网络原理(7)-NAT(Network Address Translation)
java·网络·网络协议·java-ee
赵民勇4 分钟前
Python collections.ChainMap 详解
python
三十岁老牛再出发6 分钟前
9月16日总结
python·深度学习·机器学习
jaysee-sjc8 分钟前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
雨辰AI10 分钟前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端
AI深栈12 分钟前
第 12 章 · AI智能体的结构化输出与流式响应
java·人工智能
君顾117 分钟前
本地AI错题纠正小程序:端侧推理与错题闭环实战
java·开发语言·错题
Wang's Blog22 分钟前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
计算机源码社25 分钟前
基于大数据的全球温室气体排放燃料结构与碳强度评估研究-基于Spark的全球温室气体排放多维度检测与评估分析
大数据·hadoop·python·数据挖掘·数据分析·spark·毕业设计