
本文介绍如何使用 azure databricks jobs rest api,结合 java 发送 http 请求,实现从外部应用(如 java 程序)远程提交、启动、查询和监控 databricks 作业,无需依赖 jdbc 连接执行作业逻辑。
Azure Databricks 不支持通过 JDBC 直接调用或管理集群上的作业(JDBC 仅用于执行 SQL 查询或读写 Delta 表等数据操作)。但官方提供了功能完备的 Jobs REST API v2.1(推荐替代已弃用的 v2.0),允许你以编程方式完成以下核心操作:
- ✅ 启动已有作业(run-now)
- ✅ 创建/更新/删除作业定义
- ✅ 查询运行状态与日志(get-run、export-run)
- ✅ 取消正在运行的作业
✅ Java 调用示例:触发指定作业 ID 的运行
以下是一个基于 HttpClient(Java 11+ 内置)的简洁示例,使用 Personal Access Token 认证:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class DatabricksJobRunner {
private static final String DATABRICKS_INSTANCE = "https://.azuredatabricks.net"; // 替换为实际工作区 URL
private static final String TOKEN = "dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // 替换为你的 Personal Access Token
private static final int JOB_ID = 12345; // 替换为目标作业 ID
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(DATABRICKS_INSTANCE + "/api/2.1/jobs/run-now"))
.header("Authorization", "Bearer " + TOKEN)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(
String.format("{\"job_id\": %d}", JOB_ID)))
.build();
HttpResponse response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Response: " + response.body());
}
} ? 认证说明:必须使用 Personal Access Token(PAT),且该 Token 需具备对应作业所在工作区的 Can Manage 或至少 Can Run 权限。
⚠️ 关键注意事项
- 不要混淆 JDBC 与 REST API:JDBC 连接(jdbc:databricks://...)仅用于 SQL 执行,无法启动作业、调度任务或管理集群生命周期。
- 作业必须预先创建:run-now 接口仅触发已存在于 Databricks 工作区中的作业(可通过 UI、Terraform 或 Jobs API 创建)。
- 网络与权限:确保运行 Java 应用的机器可访问 Databricks 实例(无防火墙拦截),且 Token 绑定的用户拥有目标作业的操作权限。
- 错误处理建议:生产环境应捕获 IOException / InterruptedException,并解析响应体中的 error_code(如 INVALID_PARAMETER_VALUE、PERMISSION_DENIED)进行诊断。
- 推荐升级至 API v2.1:v2.0 已标记为 deprecated;v2.1 支持更丰富的字段(如 idempotency_token、parameters)、多任务作业及更细粒度的状态反馈。
✅ 总结
真正实现“从 Java 管理 Databricks 作业”的标准路径是:使用 REST API + HTTP 客户端 + Token 认证。这是 Azure Databricks 官方支持、云原生、可审计且易于集成到 CI/CD 或调度系统(如 Airflow、Spring Batch)中的方案。将 JDBC 用于数据交互,将 Jobs API 用于任务编排——二者分工明确,协同高效。










