Win11环境下PySpark会话启动超时,复刻Win10操作无效求助
Windows 11下Anaconda装PySpark会话卡壳的解决办法
1. 先搞定Java环境
PySpark必须依赖Java,Windows 11大概率没配置对版本:
- 安装Java 8或11(PySpark 3.x只适配这两个版本,别装17及以上)
- 配置系统环境变量:
- 添加
JAVA_HOME,指向Java安装根目录(比如C:\Program Files\Java\jdk1.8.0_381) - 把
%JAVA_HOME%\bin加入Path环境变量
- 添加
- 验证:打开cmd输入
java -version和javac -version,能正常输出版本号就说明配置正确
2. 补全PySpark需要的环境变量
Windows下PySpark得靠winutils模拟Hadoop环境,必须配置:
- 添加
SPARK_HOME:指向你Anaconda环境里PySpark的安装路径(比如C:\Users\你的用户名\anaconda3\envs\你的环境名\Lib\site-packages\pyspark) - 添加
HADOOP_HOME:指向存放winutils的文件夹(得下载和PySpark匹配的Hadoop版本,比如PySpark 3.3.x对应Hadoop 3.3.x) - 把
%SPARK_HOME%\bin和%HADOOP_HOME%\bin加到Path - 重点:把winutils放到
HADOOP_HOME\bin目录,然后打开管理员cmd运行winutils.exe chmod 777 /tmp/hive,给临时目录赋权限
3. 检查Jupyter内核配置
- 找到内核配置文件:路径一般是
C:\Users\你的用户名\AppData\Roaming\jupyter\kernels\你的内核名\kernel.json - 确保
env字段里的环境变量完全正确,示例如下:{ "argv": [ "C:\\Users\\你的用户名\\anaconda3\\envs\\你的环境名\\python.exe", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "你的内核名", "language": "python", "env": { "JAVA_HOME": "C:\\Program Files\\Java\\jdk1.8.0_381", "SPARK_HOME": "C:\\Users\\你的用户名\\anaconda3\\envs\\你的环境名\\Lib\\site-packages\\pyspark", "HADOOP_HOME": "C:\\hadoop-3.3.4", "PATH": "%PATH%;%SPARK_HOME%\\bin;%HADOOP_HOME%\\bin" } }
4. 先在终端测试基础运行
- 激活你的Anaconda环境:
conda activate 你的环境名 - 直接输入
pyspark,看能不能进入交互界面,卡壳的话看终端报错日志,定位卡住的环节 - 也可以写个简单脚本测试:
运行脚本查看INFO级日志,确定是Hadoop初始化还是Java连接出了问题import pyspark from pyspark.sql import SparkSession import logging logging.basicConfig(level=logging.INFO) spark = SparkSession.builder \ .master("local[*]") \ .appName("TestSession") \ .getOrCreate() print(spark.version) spark.stop()
5. 排查Windows 11的权限坑
- 给Anaconda、Jupyter Notebook开管理员权限运行,右键选择“以管理员身份运行”
- 手动创建
C:\tmp\hive文件夹,然后用winutils赋予权限:winutils.exe chmod 777 C:\tmp\hive - 临时关闭Windows Defender或第三方杀毒软件的实时保护,避免其拦截PySpark的进程通信
6. 核对版本兼容性
- 确认Python版本和PySpark匹配:PySpark 3.3.x支持Python 3.7-3.10,别用3.11及以上版本
- 试试降级PySpark,比如从最新版降到3.3.2,说不定是新版本和Windows 11存在兼容问题
内容的提问来源于stack exchange,提问作者Pra V Een
相关产品推荐
相关产品推荐

