You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JupyterLab中PySpark配置Java组件遇错求助:文件未找到及网关退出

修复PySpark启动时的FileNotFoundError与Java Gateway退出问题

核心问题分析

  • 初始FileNotFoundError源于路径配置错误(含空格、转义字符解析失败)
  • 修正路径后出现的PySparkRuntimeError: [JAVA_GATEWAY_EXITED],通常和Java环境不兼容、Spark路径配置错误、Hadoop依赖缺失相关

分步修复方案

1. 修正环境变量配置(关键)

Windows路径中的反斜杠必须用双反斜杠\\或原始字符串r"路径",否则会被解析为转义字符导致路径无效。同时SPARK_HOME必须指向Spark根目录而非bin目录,JAVA_HOME指向JDK根目录:

import os
# 配置JAVA_HOME(指向JDK根目录)
os.environ["JAVA_HOME"] = r"C:\Java"
# 配置SPARK_HOME(指向Spark根目录)
os.environ["SPARK_HOME"] = r"C:\spark-3.5.0-bin-hadoop3\spark-3.5.0-bin-hadoop3"
# 更新PATH,优先加载Java和Spark的bin目录
os.environ["PATH"] = f"{os.environ['JAVA_HOME']}\\bin;{os.environ['SPARK_HOME']}\\bin;{os.environ['PATH']}"

同时要在Windows系统环境变量中做相同配置(而非仅在代码中临时设置):

  • 新建系统变量JAVA_HOME,值为JDK根目录
  • 新建系统变量SPARK_HOME,值为Spark根目录
  • 在系统变量PATH中添加%JAVA_HOME%\bin和%SPARK_HOME%\bin,移至列表顶部避免冲突

2. 版本兼容性校验

  • 统一Spark版本:你提到的Spark版本是3.0.5,但路径显示为3.5.0,必须保持一致。Spark 3.5.0推荐搭配Java 11(Java 8也兼容,但部分高级功能受限)
  • 确认所有组件位数一致:Java、Spark、Python/Anaconda必须都是64位
  • 选择正确的Spark包:使用**预构建适配Apache Hadoop 3.3+**的包,避免选用“用户提供Hadoop”的包(此类包需额外配置Hadoop环境)

3. 解决Java Gateway退出问题

  • 验证Java环境:打开CMD输入java -version和javac -version,若报错则重新安装Java并确保环境变量配置正确
  • 若使用无Hadoop的Spark包:下载对应版本的winutils.exe放入%SPARK_HOME%\bin,并新建系统变量HADOOP_HOME,值为Spark根目录
  • 完全重启JupyterLab(而非仅重启内核),确保环境变量生效

4. 配置验证与测试

在Jupyter中先运行以下代码验证环境配置:

import os
print("JAVA_HOME:", os.environ.get("JAVA_HOME"))
print("SPARK_HOME:", os.environ.get("SPARK_HOME"))
# 验证命令可用性
!java -version
!spark-shell --version

若所有命令正常输出版本信息,再创建SparkSession:

from pyspark.sql import SparkSession
# 指定local模式启动,避免集群配置问题
spark = SparkSession.builder.master("local[*]").appName('practice').getOrCreate()

内容的提问来源于stack exchange,提问作者Alvaro C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:24:52