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

Spark & Scala调用saveAsTextFile()抛出UnsatisfiedLinkError异常求助

解决Spark saveAsTextFile()在Windows下的UnsatisfiedLinkError问题

Hey there! I see you're new to Spark & Scala and hitting a frustrating error when trying to save your word count results. Let's break this down and fix it.

问题原因

那个java.lang.UnsatisfiedLinkError是Windows环境下Spark常见的坑——Hadoop的Windows本地原生库缺失或未正确配置。Spark依赖Hadoop的文件系统API来读写本地文件,而Windows需要对应的winutils.exe和hadoop.dll文件才能让这些API正常工作,缺失它们就会抛出这个链接错误。

具体解决方案

这里有几个清晰的步骤帮你搞定:

  1. 下载对应版本的Hadoop Windows原生库
    你用的是Spark 2.3.0,对应的Hadoop版本通常是2.7.x,所以要找适配hadoop-2.7.x的Windows工具包。核心需要两个文件:

    • winutils.exe
    • hadoop.dll
      把它们放到一个专门的文件夹里,比如C:\hadoop\bin(先手动创建这个目录)。
  2. 配置系统环境变量

    • 新建系统环境变量HADOOP_HOME,值设为C:\hadoop(注意是文件夹根路径,不要加\bin)
    • 编辑PATH环境变量,添加%HADOOP_HOME%\bin到列表中
  3. 重启终端和spark-shell
    环境变量需要重启终端才会生效,关掉当前的CMD窗口,重新打开后再启动spark-shell。

  4. (可选)临时配置(无需修改系统环境变量)
    如果不想改动系统环境变量,你可以在启动spark-shell时直接指定参数:

    spark-shell --conf spark.hadoop.hadoop.home.dir=C:\hadoop
    

    或者在spark-shell里先执行这段代码(要在调用saveAsTextFile()之前):

    System.setProperty("hadoop.home.dir", "C:\\hadoop")
    
  5. 额外注意:输出目录不能提前存在
    Spark的saveAsTextFile()要求目标目录不存在,如果你的output文件夹已经在当前路径下,先手动删除它再运行代码,不然会触发另一个错误。

验证你的代码

顺便说一句,你的wordcount代码本身是完全正确的,没有逻辑问题,只要环境配置到位,就能正常输出统计结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:55:21