You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark在Windows环境保存CSV文件时报File not found错误如何解决?

问题根因
  • 报错核心原因是Windows系统环境下运行PySpark依赖Hadoop的Windows适配组件winutils.exe,系统未配置HADOOP_HOME环境变量导致组件无法被调用
  • 生成空文件夹是Spark写入文件的默认机制:Spark为分布式计算框架,默认会将输出数据拆分为多个分片存储,因此会先创建指定名称的文件夹,分片数据文件会存储在该文件夹内,报错后写入流程终止,因此仅生成空文件夹
解决方案

第一步:修复HADOOP_HOME未配置报错

有两种实现方式,任选其一即可:

方式一:永久配置系统环境变量

  1. 下载与当前Spark版本依赖的Hadoop版本匹配的winutils.exe、hadoop.dll文件
  2. 本地新建文件夹C:\hadoop,在文件夹内创建bin子目录,将下载的两个文件放入bin目录中
  3. 打开系统环境变量配置面板:
    • 新建系统变量HADOOP_HOME,变量值填写C:\hadoop
    • 编辑系统变量Path,新增条目%HADOOP_HOME%\bin
  4. 重启Jupyter Notebook即可生效,若仍识别失败可重启计算机

方式二:代码内临时配置(无需修改系统设置)

在创建SparkSession的代码之前,插入以下配置代码:

import os
# 替换为你实际存放hadoop文件夹的路径
os.environ['HADOOP_HOME'] = 'C:/hadoop'
os.environ['PATH'] = f"{os.environ['HADOOP_HOME']}/bin;{os.environ['PATH']}"

第二步:调整写入逻辑生成可用CSV

修复环境配置后,若需要直接得到单个CSV文件,可通过coalesce(1)将数据合并为单个分区后再写入,示例代码如下:

# 加option("header", "true")可将DataFrame列名作为CSV首行写入,不需要可删除
df.coalesce(1).write.format("csv").mode("overwrite").option("header", "true").save("filtered_csv_dir")

写入完成后,进入生成的filtered_csv_dir文件夹,找到后缀为.csv的文件,手动重命名为需要的文件名即可使用。

内容的提问来源于stack exchange,提问作者Jack Avante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:57:05