Windows环境下开发pyspark程序
一、环境准备:Anaconda + Python 虚拟环境
1. 安装 Anaconda(推荐)
下载地址:https://www.anaconda.com/products/distribution
安装时选择"Add Anaconda to PATH"会更方便。
2、新建虚拟环境
使用conda新建一个虚拟环境用于PySpark开发:Python虚拟环境(windows)
✅ 推荐使用
python=3.10,兼容性好,适合新项目。
bash
conda create -p D: \APP\Anaconda\envs\spark_env python=3.10
2 、查看虚拟环境是否创建成功
bash
conda env list


3、激活环境 并安装 PySpark 与必要依赖
bash
conda activate 环境名 # 激活环境
pip install pyspark == 3.5.0 # 安装pyspark
pip install psutil # 安装psutil

二、安装hadoop \ winutils
下载hadoop
(一)镜像网站下载
-
推荐镜像下载 :
https://mirrors.aliyun.com/apache/hadoop/core/hadoop-3.4.2/ -
下载文件:
hadoop-3.4.2.tar.gz(或.zip) -
解压到本地,例如:
E:\hadoop-3.4.2

(二)官方网站下载
1、到官方网站下载 hadoop 这里我下载的是3.4.2版本

2、点击下载

3、双击安装包 解压到自己的磁盘中

下载winutils (Windows 下的 Hadoop 工具)
GitHub/Gitee 下载:
- Gitee 镜像(国内推荐) :https://gitee.com/nkuhyx/winutils
🔍 注意:选择与你 Hadoop 版本匹配的
bin文件夹!

1、配置winutils
解压文件,选择hadoop版本(我这里是选择3.3.0版本的)对应的文件夹bin目录下的hadoop.dll和winutils.exe文件

将hadoop.dll和winutils.exe 拷贝到E:\hadoop-3.4.2\bin 、C:\Windows\System32下(两个文件各拷贝一份到两个目录中)


三、配置环境变量
1、配置系统变量
bash
HADOOP_HOME

2、配置系统变量 path路径 添加
bash
%HADOOP_HOME%\bin

4、环境测试
打开cmd
bash
hadoop version

四、出现的问题
1、问题一:

解决方法:查看Java版本
确定java 环境变量是否配置成功 这里最好用jdk8 也就是jdk 1.8
. Hadoop 官方文档明确支持 JDK 8
Hadoop 官方推荐的 Java 版本是 Java 8(JDK 1.8)
官方文档(Apache Hadoop 3.4.3 -- Hadoop Cluster Setup )中明确写:
"Java 8 is the only officially supported version for Hadoop 3.x."
|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| JDK 8 下载(Temurin) | https://adoptium.net/temurin/releases/?version=8 |
(1)找到hadoop\etc\hadoop这个目录下的hadoop-env.cmd这个命令脚本。
修改JAVA_HOME,我的JAVA的安装路径为:D:\JDK1.8

检查问题解决

2、问题二:WinUtils.dll not found

报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解决方法:
确保 winutils.exe 和 hadoop.dll 已复制到:
E:\hadoop-3.4.2\bin\
C:\Windows\System32\
确保 Hadoop 路径配置正确(HADOOP_HOME)
重启 CMD,重新运行命令
3、问题三:版本不兼容
bash
java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0
极大概率发生! 52.0 = Java 8,但你用 Java 22 或者别的 → 不兼容
解决方法:
最好用JDK8 注意环境变量配置 ,python 版本 也不能太高
4、问题四 找不到python3
解决方法:
彻底删除非法 python3.exe,并用真实可执行文件替代!
步骤一:删除非法的python3
根据路径打开这两个文件 发现打不开
直接删除
C:\Users\48400\AppData\Local\Microsoft\WindowsApps\python3.exe
C:\Users\48400\AppData\Local\Microsoft\WindowsApps\python.exe
🚫 这个文件是"幽灵"!你不能让它影响系统!
-
打开文件资源管理器,进入: <TEXT>
C:\Users\48400\AppData\Local\Microsoft\WindowsApps
-
找到
python3.exe 和 python.exe -
右键 → 删除
- 可能会提示"无法删除,因为权限不足"
- 解决方法:右键 → 属性 → 安全 → 编辑 → 添加你的用户 → 给「完全控制」→ 保存
删除后,
where python3就只显示:
<TEXT>
C:\msys64\ucrt64\bin\python3.exe
👉 但这也不是你想要的!msys64 的 Python 安装很老、不完整,不适合 Spark!
步骤二:给Anaconda配置正确的python
把 D:\APP\Anaconda 加入系统 PATH
- 「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里找到
Path→ 编辑 → 新建 - 添加 D:\APP\Anaconda
- 检查python还有没有 C:\Users\48400\AppData\Local\Microsoft\WindowsApps\python3.exe
- 点击「确定」,然后 重启 PyCharm

五、验证 PySpark 是否可用(测试代码)
python
import os
os.environ["HADOOP_HOME"] = "E:\APP\hadoop-3.4.2"
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Test") \
.master("local[*]") \
.config("spark.executorEnv.PYSPARK_PYTHON", "D:\\APP\\Anaconda\\python.exe") \
.getOrCreate()
print("Spark 已启动,版本:", spark.version)
df = spark.range(5).withColumnRenamed("id", "num")
df.show() # 必须加!
spark.stop()
print("👋 Spark 已关闭")
输出:配置成功啦
Spark 已启动,版本: 3.5.0
+---+
|num|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
+---+
👋 Spark 已关闭
六、总结
| 检查项 | 是否完成 |
|---|---|
| 使用 Anaconda 创建虚拟环境 | ✔️ |
激活环境并安装 pyspark、psutil |
✔️ |
| 下载 Hadoop 3.4.2 并解压至指定路径 | ✔️ |
| 下载 winutils(3.4.2 版本对应) | ✔️ |
复制 winutils.exe 和 hadoop.dll 到 bin 和 System32 |
✔️ |
配置 HADOOP_HOME 和 PATH |
✔️ |
配置 JAVA_HOME 指向 JDK 8 |
✔️ |
运行 hadoop version 测试成功 |
✔️ |
| PySpark 测试代码运行通过 | ✔️ |
推荐资源(不想下载可以直接从我网盘网盘获取 )
| 资源 | 链接 |
|---|---|
| Hadoop 官方文档 | https://hadoop.apache.org/docs/stable/ |
| JDK 8 下载(Temurin) | https://adoptium.net/temurin/releases/?version=8 |
| winutils(Gitee 镜像) | https://gitee.com/nkuhyx/winutils |
| Hadoop 3.4.2 下载 | https://mirrors.aliyun.com/apache/hadoop/core/hadoop-3.4.2/ |


