Windows 10环境下PySpark 3.1.2搭配Hadoop 3.2无法运行问题求助
可行解决方案如下
- 优先匹配winutils版本:PySpark 3.1.2默认绑定Hadoop 3.2.x版本,必须使用对应hadoop-3.2.2版本的
winutils.exe和hadoop.dll文件,不可以用适配Hadoop 2.7、3.0或3.3版本的winutils文件,这是3.1.x版本和3.0.1版本最核心的兼容性差异点。 - 修正环境变量配置:
HADOOP_HOME需指向Hadoop二进制包的根目录(例如C:\dev\hadoop-3.2.2),不要直接指向bin文件夹,再将%HADOOP_HOME%\bin添加到系统PATH变量中,配置完成后必须重启终端或IDE,避免使用环境变量缓存。 - 调整目录权限:给winutils所在的bin目录、你要写入parquet文件的目标目录,以及Windows临时目录(默认
C:\Users\当前用户名\AppData\Local\Temp),添加当前登录用户的完全控制权限,也可以直接用管理员权限运行IDE或Python脚本,3.1.x版本对临时目录的权限校验远严格于3.0.1版本,权限不足是winutils相关报错的高发原因。 - 清理残留临时文件:先删除Windows临时目录下所有spark前缀的文件夹,避免之前运行失败留下的锁文件、不完整临时文件干扰后续写入操作。
如果以上操作都完成后仍无法运行,可以在初始化SparkSession时手动指定Hadoop兼容参数,或直接下载预编译的带Hadoop 2.7依赖的Spark 3.1.2安装包,配合对应2.7版本的winutils使用,也可以正常运行。
内容的提问来源于stack exchange,提问作者bloussou
相关产品推荐
相关产品推荐

