Azure Databricks中安装azure-storage-file-share依赖库失败求助
看起来你遇到了个挺棘手的依赖安装问题——之前用Maven在Databricks里装azure-storage-file-share好好的,现在突然因为netty的native依赖找不到报错,手动下载了对应jar还是不行。我帮你捋捋问题根源和可行的解决方向:
问题根源分析
从你的日志能看出核心矛盾:
downloading https://maven-central.storage-download.googleapis.com/maven2/io/netty/netty-transport-native-kqueue/4.1.86.Final/netty-transport-native-kqueue-4.1.86.Final-osx-x86_64.jar ... [SUCCESSFUL ] io.netty#netty-transport-native-kqueue;4.1.86.Final!netty-transport-native-kqueue.jar (202ms)
你下载的是macOS平台专属的netty-transport-native-kqueue包,但Azure Databricks集群用的是Linux节点,系统自然找不到对应Linux版本的jar,才会抛出错误:
java.io.FileNotFoundException: File file:/local_disk0/tmp/clusterWideResolutionDir/maven/ivy/jars/io.netty_netty-transport-native-kqueue-4.1.86.Final.jar does not exist
手动装的mac版本jar和Linux环境不兼容,所以问题依然存在。
具体解决办法
1. 排除mac专属依赖,替换为Linux兼容版本
在Databricks添加Maven库时,直接排除kqueue依赖,同时添加Linux专用的epoll版本netty:
- 先添加带排除项的azure-storage-file-share坐标:
com.azure:azure-storage-file-share:12.16.2,exclusions=[io.netty:netty-transport-native-kqueue] - 再单独添加Linux版本的netty依赖:
io.netty:netty-transport-native-epoll:4.1.86.Final:linux-x86_64
这样Maven会自动拉取适配Linux的native库,避免路径找不到的问题。
2. 清理集群缓存并重启
Databricks的库安装缓存偶尔会残留旧的依赖路径,导致解析出错。你可以:
- 删除集群上所有相关的自定义库
- 重启集群
- 重新只安装
com.azure:azure-storage-file-share:12.16.2,让Maven自动解析正确的依赖链,不要手动添加netty
3. 升级azure-storage-file-share版本
依赖兼容问题有时候会在新版本中被修复,你可以试试升级到最新稳定版(比如12.20.0),看是否还会触发这个netty依赖问题。
4. 用集群初始化脚本兜底
如果Maven安装始终有问题,可以用集群初始化脚本手动部署依赖:
- 编写shell脚本,下载对应Linux版本的netty jar到集群的
/databricks/jars目录 - 在集群设置中添加这个初始化脚本,重启集群后依赖会自动加载到Spark的classpath中
额外提示
如果以上方法都不管用,可以去查看集群的driver日志(路径:/databricks/driver/logs),里面有更详细的依赖解析过程,能帮你定位是否有其他隐藏的依赖冲突。
备注:内容来源于stack exchange,提问作者Nathan Bruce

