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_HOME,变量值填Java的安装目次
着实找不到Java的安装目次的话就先在体系变量内里的Path内里新建一个C:\Windows\System32
如许就可以在cmd中输入
只需要到jdk的根目次就可以了,我的jdk根目次即C:\Program Files\Java\jdk-1.8
添加完JAVA_HOME后,在Path中添加%JAVA_HOME%\bin
到此为止,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得到路径
同时将spark\python内里的pyspark复制一份到python的lib\site-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%
复制代码
直接输入
出现这个则配置成功
在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。只要环境配置好和版本精确的话就没题目了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |