咨询Spark 3.3.1在Windows 10下修改hadoop.dll路径的可行方案
在Windows 10上无需管理员权限配置Spark 3.3.1的hadoop.dll路径
以下是几种无需将hadoop.dll放入C:\Windows\System32即可解决java.lang.UnsatisfiedLinkError错误的方法:
方法1:配置HADOOP_HOME用户环境变量
- 选择一个你拥有读写权限的本地目录(比如
C:\spark-local\hadoop),在该目录下创建bin子文件夹 - 将下载好的
winutils.exe和hadoop.dll同时放入这个bin子文件夹中 - 打开用户环境变量(无需管理员权限):
- 新建环境变量
HADOOP_HOME,值设为你创建的根目录路径(比如C:\spark-local\hadoop) - 编辑
PATH变量,添加%HADOOP_HOME%\bin到变量值末尾
- 新建环境变量
- 重启命令行或IDE,Spark启动时会自动从HADOOP_HOME的bin目录加载所需库文件
方法2:启动Spark时指定库路径参数
- 如果你不想修改环境变量,可以在启动Spark的命令中直接指定
java.library.path:- 用spark-shell启动:
spark-shell --driver-library-path C:\your-dll-directory - 用spark-submit提交任务:
spark-submit --driver-library-path C:\your-dll-directory your-spark-app.jar
- 用spark-shell启动:
- 若在代码中初始化SparkSession,也可以提前设置系统属性:
// 在创建SparkSession前执行 System.setProperty("java.library.path", "C:/your-dll-directory");
方法3:复制hadoop.dll到JRE的bin目录
- 找到你运行Spark所使用的JRE的
bin目录(比如你自行安装的JDK下的jre\bin,通常用户对这个目录有写入权限) - 将
hadoop.dll复制到该bin目录下,Java启动时会优先加载JRE目录中的本地库文件
内容的提问来源于stack exchange,提问作者Diego Dávila Vilchez
相关产品推荐
相关产品推荐

