PySpark.getOrCreate() 报错
错误内容:
在创建SparkSession的时候,代码运行到 getOrCreate的时候报错。使用的是VSCODE的jupyter notebook
RuntimeError: Java gateway process exited before sending its port number
设备:
WIN11,安装了WSL2 和ubuntu.20 LTS
已经通过Ubuntu安装了java-8
具体情况:
在google上搜到说大概率是因为JAVA_HOME没配置好。
第一次检查:
我根据我们学校的方法是通过将JAVA_HOME以及路径加入到/etc/environment文件夹中。
然后source /etc/environment,此时我用echo $JAVA_HOME会返回路径=usr/lib/java-8-jdk-amd64
但是当我关闭ubuntu的终端,再重新打开ubuntu 再次使用echo $JAVA_HOME,则返回为空。
随后我用vim /etc/environment查看文件夹,文件夹内确实存在PATH和JAVA_HOME变量,但是为什么当我source,然后关闭终端之后,JAVA_HOME就失效了?
难道source 不能让环境变量变成永久吗?
第二次尝试解决:
尝试将JAVA_HOME写入bashrc和/etc/profile中:
在网上找到一些方法,通过sudo nano ~/.bashrc和 sudo nano /etc/profile 将PATH 和 JAVA_HOME插入profile文件或者bashrc文件。
通过这种方法,我无论什么时候关闭或者重新打开终端,输入echo $JAVA_HOME都能得到路径。
但是VSCODE上仍旧报错,还是一样的error。
是我的JAVA安装有什么问题吗?还是说跟python的版本不能兼容?在VSCODE上,Python用的是3.10。
感谢回答
你可以跑一下代码看一下Java环境
import os
print(os.environ['JAVA_HOME'])
问题分析:
根据问题描述,主要存在以下可能的原因:
解决方案:
确认JAVA_HOME环境变量是否正确配置。
首先,在终端中执行以下命令,查看JAVA_HOME的值:
echo $JAVA_HOME
如果返回结果为空,说明JAVA_HOME环境变量没有正确配置。解决方法如下:
打开~/.bashrc
文件:
sudo nano ~/.bashrc
在文件末尾添加以下内容(假设JAVA_HOME安装路径为/usr/lib/java-8-jdk-amd64):
export JAVA_HOME=/usr/lib/java-8-jdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
保存并关闭文件,然后执行以下命令使配置生效:
source ~/.bashrc
再次执行以下命令,确认JAVA_HOME的值已经正确设置:
echo $JAVA_HOME
如果返回正确的JAVA_HOME路径,说明配置成功。
确认JAVA安装是否正常。
执行以下命令查看是否成功安装JAVA:
java -version
如果能够正确显示JAVA的版本信息,说明JAVA安装正常。
检查Python版本与PySpark的兼容性。
执行以下代码获取Python版本:
python import sys print(sys.version)
检查Python版本是否为3.10,如果不是,则需要安装与PySpark兼容的Python版本。可以尝试安装3.7或3.8版本的Python来解决兼容性问题。
综上所述,根据以上步骤和方法,您可以逐步排查和解决问题。希望能帮到您!如果还有其他问题,请随时提问。