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

PySpark将DataFrame输出为CSV文件时出现NativeIO报错如何解决

Windows PySpark写CSV报NativeIO错误解决方案

错误根因

该报错是Windows环境下PySpark依赖的Hadoop原生组件缺失/不匹配导致的,系统无法调用Hadoop内置的Windows文件权限校验接口。

解决方案

方案1:永久修复(推荐本地开发环境使用)

  • 第一步:确认你当前PySpark版本对应的Hadoop依赖版本,可通过PySpark启动日志查看,比如Spark 3.3.x默认对应Hadoop 3.3.x版本。
  • 第二步:获取对应版本的Windows适配Hadoop工具包(包含winutils.exe、hadoop.dll),将解压后的文件夹放到本地任意路径,比如C:\dev\hadoop-3.3.0。
  • 第三步:配置系统环境变量:
    • 新建系统变量HADOOP_HOME,值为上述文件夹的根路径,比如C:\dev\hadoop-3.3.0
    • 编辑系统变量Path,新增条目%HADOOP_HOME%\bin
  • 第四步:将%HADOOP_HOME%\bin目录下的hadoop.dll文件复制到C:\Windows\System32目录中。
  • 第五步:重启IDE/命令行终端,重新运行PySpark代码即可生效。

方案2:临时规避(适合单次测试快速验证)

在初始化SparkSession的时候添加禁用NativeIO校验的配置,无需修改系统环境:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("test_write_csv") \
    .config("spark.hadoop.io.nativeio.enabled", "false") \
    .getOrCreate()

额外代码优化建议

你提供的代码存在路径斜杠混写问题,Windows路径下要么统一用正斜杠,要么用双反斜杠避免转义错误,修改后的写文件代码参考:

Test_df.repartition(1).write.format('com.databricks.spark.csv').save("C:/philips/RS/output/OUTPUT.csv",header='true')
# 或者用双反斜杠版本
# Test_df.repartition(1).write.format('com.databricks.spark.csv').save("C:\\philips\\RS\\output\\OUTPUT.csv",header='true')

内容的提问来源于stack exchange,提问作者Smita Banerjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:09:04