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

安装Hadoop 3.3.1后pyspark异常,spark-shell却正常,原因何在?

问题描述

原本安装Spark 3.3.1时,spark-shell和pyspark命令均可正常运行。安装Hadoop 3.3.1后,pyspark命令出现异常:

  • 执行pyspark2 --num-executors 4 --executor-memory 1g后仅打开Jupyter Notebook,界面无Spark标识,且无法像之前一样在CMD中启动Python Shell交互环境;
  • spark-shell仍可正常启动并进入Scala交互环境。

环境配置

系统变量

JAVA_HOME : C:\ProgramData\OpenJDK
HADOOP_HOME : C:\ProgramData\hadoop
SPARK_HOME : C:\ProgramData\spark
PYSPARK_PYTHON : python
PYSPARK_DRIVER_PYTHON : jupyter
PYSPARK_DRIVER_PYTHON_OPTS : notebook
PYTHONPATH : %SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.9.5-src.zip;%PYTHONPATH%

系统路径

C:\ProgramData\OpenJDK\bin
C:\ProgramData\spark\bin
C:\ProgramData\hadoop\bin
C:\ProgramData\hadoop\sbin
C:\Users\A\AppData\Local\Programs\Python\Python311
C:\Users\A\AppData\Local\Programs\Python\Python311\Lib\site-packages

解决方案

1. 修正PYSPARK_DRIVER_PYTHON配置

当前系统变量PYSPARK_DRIVER_PYTHON设为jupyter,这会强制pyspark启动Jupyter而非Python Shell:

  • 临时生效:打开CMD,执行set PYSPARK_DRIVER_PYTHON=python,随后运行pyspark --num-executors 4 --executor-memory 1g即可进入CMD的Python Shell;
  • 永久生效:在系统变量中修改PYSPARK_DRIVER_PYTHON值为python,并删除或清空PYSPARK_DRIVER_PYTHON_OPTS变量。

2. 检查Hadoop Windows依赖

Spark在Windows环境依赖Hadoop的winutils组件:

  • 确认C:\ProgramData\hadoop\bin目录下存在winutils.exe和hadoop.dll,版本需与Hadoop 3.3.1匹配;
  • 若缺失,下载对应版本的winutils包放入该目录,并确保C:\ProgramData\hadoop\bin在系统PATH的最前列,避免路径冲突。

3. 使用正确的pyspark命令

用户执行的pyspark2并非Spark 3.3.1的标准命令,可能是旧版本残留或错误命名:

  • 直接执行pyspark --num-executors 4 --executor-memory 1g调用正确的Spark Python客户端。

4. 验证PythonPATH路径有效性

确认%SPARK_HOME%\python和py4j压缩包路径实际存在:

  • 检查C:\ProgramData\spark\python\lib\py4j-0.10.9.5-src.zip是否存在,若路径错误或文件缺失,修正PythonPATH配置或重新下载对应版本的py4j包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:50:25