PySpark写入Parquet文件失败求助:报Py4JJavaError错误
解决PySpark保存Parquet时的Py4JJavaError(错误码-1073741515)
错误码-1073741515对应Windows系统的0xC0000135错误,核心原因是Spark运行依赖的组件缺失或配置异常——你简化测试代码仍报错,也验证了问题和数据本身无关。以下是针对性解决方案:
1. 补全Hadoop WinUtils工具
Spark在Windows上执行文件系统操作必须依赖Hadoop的WinUtils组件,缺失会直接触发该错误:
- 下载与你的Spark版本匹配的WinUtils(例如Spark 3.x对应Hadoop 3.x版本)
- 解压后将
winutils.exe放入HADOOP_HOME/bin目录(若未设置HADOOP_HOME,需新建环境变量指向包含bin文件夹的父目录) - 将
HADOOP_HOME/bin添加到系统PATH环境变量,重启Python/IDE后重试
2. 验证Java环境配置
Spark仅兼容Java 8或11(Java 17部分版本存在兼容性问题):
- 打开命令行执行
java -version,确认版本符合要求 - 检查
JAVA_HOME环境变量是否指向正确的Java安装目录,且已添加到系统PATH
3. 更换写入路径
- 避免写入系统保护目录(如
C:\Windows、C:\Program Files),改用普通用户拥有读写权限的路径(例如D:\test_output\proto.parquet) - 路径不要包含中文或特殊字符,防止编码解析异常
4. 调整Spark内存配置
若为内存不足导致的异常,可在初始化SparkSession时增加内存配额:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("ParquetWriteTest") \ .config("spark.driver.memory", "4g") \ .config("spark.executor.memory", "4g") \ .getOrCreate()
5. 检查组件版本兼容性
确保PySpark、Java、Hadoop三者版本匹配:
- 例如Spark 3.3.x推荐搭配Java 8/11、Hadoop 3.3.x
- 避免跨大版本混用组件(如Spark 3.x搭配Hadoop 2.x)
内容的提问来源于stack exchange,提问作者ForestGump
相关产品推荐
相关产品推荐

