Windows下Jupyter(Anaconda)运行PySpark时Java网关进程报错求助
解决Windows Anaconda环境中PySpark创建SparkSession时的Java Gateway端口错误
核心问题排查与解决方案
1. 版本不匹配(优先级最高)
你的PySpark版本是3.3.1,但本地安装的Spark核心包是3.1.3,两者版本必须严格一致,否则会引发兼容性问题。
- 解决方式二选一:
- 降级PySpark到3.1.3:在Anaconda Prompt中执行
pip install pyspark==3.1.3 --force-reinstall - 升级Spark核心包到3.3.1版本,下载对应Hadoop版本的安装包替换现有
C:\Spark\spark-3.1.3-bin-hadoop3.2目录
- 降级PySpark到3.1.3:在Anaconda Prompt中执行
2. Windows平台Hadoop依赖缺失
Windows下运行Spark必须依赖winutils.exe和hadoop.dll,缺失会直接导致Java网关启动失败:
- 下载对应Hadoop 3.2版本的
winutils.exe和hadoop.dll - 将
winutils.exe放入C:\Spark\spark-3.1.3-bin-hadoop3.2\bin目录 - 将
hadoop.dll放入C:\Windows\System32目录 - 重启Anaconda和Jupyter Notebook
3. 环境变量生效验证
确保环境变量正确配置并生效,避免Jupyter未读取到配置:
- 打开Anaconda Prompt,依次执行以下命令验证输出:
echo %JAVA_HOME%→ 应输出C:\Java\jdk-11.0.16.1echo %SPARK_HOME%→ 应输出C:\Spark\spark-3.1.3-bin-hadoop3.2echo %HADOOP_HOME%→ 应与SPARK_HOME输出一致java -version→ 应显示JDK 11的版本信息
- 检查
PATH环境变量是否包含%SPARK_HOME%\bin和%JAVA_HOME%\bin,未添加则手动补充
4. 在Jupyter中显式指定Spark配置
如果环境变量未被Jupyter正确读取,可在代码中显式配置Spark路径:
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[*]") \ .appName("SparkTest") \ .config("spark.driver.extraClassPath", "C:\\Spark\\spark-3.1.3-bin-hadoop3.2\\jars\\*") \ .getOrCreate()
5. 查看详细错误日志定位问题
若以上方法无效,查看Java网关的错误日志:
- 日志文件通常位于
C:\Users\<你的用户名>\AppData\Local\Temp目录下,查找包含spark的日志文件,里面会记录网关启动失败的具体原因(如权限不足、依赖缺失等)
内容的提问来源于stack exchange,提问作者Nupur Gopali
相关产品推荐
相关产品推荐

