JAVA_HOME环境配置导致PySpark.getOrCreate()报错

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'])

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析:

    根据问题描述,主要存在以下可能的原因:

    1. JAVA_HOME环境变量没有正确配置。
    2. JAVA安装有问题。
    3. Python版本与PySpark不兼容。

    解决方案:

    1. 确认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路径,说明配置成功。

    2. 确认JAVA安装是否正常。

      • 执行以下命令查看是否成功安装JAVA:

        java -version

      • 如果能够正确显示JAVA的版本信息,说明JAVA安装正常。

    3. 检查Python版本与PySpark的兼容性。

      • 执行以下代码获取Python版本:

        python import sys print(sys.version)

      • 检查Python版本是否为3.10,如果不是,则需要安装与PySpark兼容的Python版本。可以尝试安装3.7或3.8版本的Python来解决兼容性问题。

    综上所述,根据以上步骤和方法,您可以逐步排查和解决问题。希望能帮到您!如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^