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

Spark读取CSV文件时出现Java UnsatisfiedLinkError错误求助

解决Spark读取CSV时的Windows原生库错误

在Windows环境下执行spark.read.csv("donation/block*.csv")读取带通配符的CSV文件时,出现java.lang.UnsatisfiedLinkError: 'boolean org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(java.lang.String, int)'错误,本质是Hadoop依赖的Windows原生库缺失、不兼容或权限问题,以下是可行的解决方法:

  • 配置Hadoop原生库

    1. 下载与你的Spark依赖的Hadoop版本匹配的Windows原生库文件(包含winutils.exe和hadoop.dll)
    2. 将文件放到一个目录(如C:\hadoop\bin)
    3. 设置系统环境变量HADOOP_HOME为C:\hadoop,并将%HADOOP_HOME%\bin添加到系统PATH中
    4. 重启运行Spark的IDE或命令行窗口,使环境变量生效
  • 禁用Hadoop原生IO实现
    在Spark初始化时添加配置,强制使用非原生IO:

    import org.apache.spark.sql.SparkSession
    
    val spark = SparkSession.builder()
      .appName("ReadDonationData")
      .config("spark.hadoop.hadoop.native.lib", "false")
      .config("spark.hadoop.io.native.lib.available", "false")
      .getOrCreate()
    
    val df = spark.read.csv("donation/block*.csv")
    

    也可以在提交任务时通过参数指定:

    spark-submit --conf spark.hadoop.hadoop.native.lib=false --conf spark.hadoop.io.native.lib.available=false your-application.jar
    
  • 检查文件路径权限
    确保当前运行Spark的用户对donation目录及其中的CSV文件拥有读写权限,必要时以管理员身份启动IDE或命令行执行代码

  • 匹配Spark与Hadoop版本
    确认使用的Spark版本和其依赖的Hadoop版本兼容(例如Spark 3.3.x对应Hadoop 3.3.x,Spark 2.4.x对应Hadoop 2.7/2.9.x),版本不匹配也可能引发原生库调用错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:09