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

Databricks Spark作业删除Azure Blob报错:缺少默认HttpClient依赖

解决Databricks Spark作业中Azure Blob删除的HttpClient依赖问题

错误原因

报错核心是Azure Storage Blob SDK依赖HTTP客户端实现,但Databricks环境默认未包含对应的依赖包。本地运行正常是因为本地项目依赖链中间接引入了Netty或OkHttp这类HTTP客户端实现,而Databricks集群的类路径里没有。

解决方案

方案1:添加HTTP客户端依赖

根据错误提示,需引入azure-core-http-netty或azure-core-http-okhttp中的一个,具体方式分两种场景:

场景A:通过Maven/Gradle打包作业JAR

如果代码打包成JAR提交到Databricks,在项目依赖管理文件中添加以下依赖(二选一即可):

Maven(pom.xml)

<!-- 选择Netty实现 -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-core-http-netty</artifactId>
    <version>1.12.7</version> <!-- 版本需与azure-storage-blob兼容,如12.x系列对应1.x -->
</dependency>

<!-- 或选择OkHttp实现 -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-core-http-okhttp</artifactId>
    <version>1.10.7</version>
</dependency>

Gradle(build.gradle)

// 选择Netty实现
implementation 'com.azure:azure-core-http-netty:1.12.7'

// 或选择OkHttp实现
implementation 'com.azure:azure-core-http-okhttp:1.10.7'

场景B:直接在Databricks作业中添加依赖

如果直接在Databricks作业中运行代码(未打包JAR),可通过作业库配置添加依赖:

  1. 打开Databricks作业编辑页面
  2. 切换到「库」标签页
  3. 点击「添加」,选择「Maven」类型
  4. 输入坐标(如com.azure:azure-core-http-netty:1.12.7),保存后重新运行作业

方案2:改用Databricks原生API删除Blob

Databricks提供dbutils.fs工具,可直接操作Azure Blob,无需额外SDK依赖,代码更简洁:

val accountName: String = spark.conf.get("AZURE_BLOB_STORAGE_ACCOUNT_NAME")
val containerName: String = "你的容器名"
val folderName: String = "你的文件夹名"

// 递归删除目标目录下所有Blob
dbutils.fs.rm(s"wasbs://$containerName@$accountName.blob.core.windows.net/$folderName", recurse = true)

注意事项

  • 确保HTTP客户端依赖版本与azure-storage-blob版本兼容,避免版本冲突
  • 使用方案2时,需确保Databricks集群已配置好Azure Blob存储的访问权限(与原代码的账号密钥配置一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:10:25