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

PySpark写入DataFrame到CSV文件时出现Py4JJavaError报错求助

解决PySpark写入CSV时的UnsatisfiedLinkError问题

错误根源

你遇到的java.lang.UnsatisfiedLinkError是Windows环境下Hadoop缺少适配的本地原生库(.dll文件)导致的。PySpark依赖Hadoop的文件系统操作组件,而Windows系统需要对应的本地库支持文件权限检查等功能。

解决方案

方案1:补充Hadoop Windows原生库

  • 下载与你的Spark依赖的Hadoop版本匹配的Windows原生库(例如winutils工具包)
  • 将解压后的hadoop.dll和winutils.exe放到一个目录(如C:\hadoop\bin)
  • 设置系统环境变量:
    • 添加HADOOP_HOME变量,值为C:\hadoop(根目录,不含bin)
    • 将C:\hadoop\bin添加到系统PATH变量中
  • 重启你的Python/Notebook环境,重新执行写入代码

方案2:修改Spark配置绕过本地库检查

在初始化SparkSession时添加配置,禁用Hadoop本地库依赖:

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("CSVWriter") \
    .config("spark.hadoop.native.lib", "false") \
    .getOrCreate()

或者在已创建的SparkSession中动态设置:

spark._jsc.hadoopConfiguration().set("hadoop.native.lib", "false")

方案3:确保写入路径权限与正确性

  • 使用绝对路径写入,避免相对路径权限问题:
    df.write.mode("overwrite").csv("C:/temp/mycsv_output")
    
  • 注意:Spark写入CSV时会生成一个文件夹(而非单个文件),文件夹内包含分区文件,若指定的路径已存在,需添加mode("overwrite")覆盖或mode("append")追加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:40:17