如何使用PySpark将数据写入本地系统的CSV或其他文件?
解决Spark写入本地CSV时的Py4JJavaError问题
检查路径权限
确认运行Spark的用户对目标路径C:/Users/DELL/Downloads/Spark_Tut/有读写权限。Windows系统可右键文件夹→属性→安全选项卡,给当前用户分配修改、写入权限。修正路径写法与保存逻辑
Windows路径可改用双反斜杠或原始字符串避免转义问题:# 双反斜杠写法 new_df.write.format("csv").mode('overwrite').save("C:\\Users\\DELL\\Downloads\\Spark_Tut\\tut_output") # 原始字符串写法 new_df.write.format("csv").mode('overwrite').save(r"C:/Users/DELL/Downloads/Spark_Tut/tut_output")注意:Spark写入CSV时会生成文件夹(包含分片文件、元数据文件),不要指定具体文件名,直接写文件夹路径即可。后续可手动合并文件夹内的
part-*文件为单个CSV。调整Spark本地模式配置
确保SparkSession以本地模式启动,避免集群模式配置导致无法访问本地文件:from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[*]") \ .appName("LocalCSVExport") \ .getOrCreate()排查数据类型问题
若DataFrame包含复杂嵌套类型(如Array、Struct),可能导致序列化失败。先尝试写入少量数据测试:new_df.limit(10).write.format("csv").mode('overwrite').save("C:/Users/DELL/Downloads/Spark_Tut/test_output")若测试成功,再处理完整数据集,必要时先将复杂类型转换为字符串格式。
内容的提问来源于stack exchange,提问作者Kamal
相关产品推荐
相关产品推荐

