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

能否通过Java代码调用或管理Azure Databricks集群作业?

Java调用Azure Databricks集群作业的可行方案

JDBC连接仅支持执行SQL语句,无法直接触发Databricks集群作业。要实现这一需求,最直接的方案是通过Azure Databricks REST API结合Java HTTP客户端完成作业的触发或创建。

核心步骤与实现

1. 准备认证与基础信息

  • 获取Azure Databricks工作区的个人访问令牌(PAT),需确保令牌拥有jobs.runnow或jobs.create等作业操作权限
  • 记录工作区URL(格式示例:https://<your-workspace-name>.azuredatabricks.net)
  • 确定要触发的目标作业ID(可在Databricks工作区的Jobs页面查看)

2. Java代码实现(触发现有作业)

使用Java原生HttpClient发送API请求,无需额外依赖:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;

public class DatabricksJobTrigger {
    public static void main(String[] args) throws Exception {
        // 替换为你的实际配置
        String databricksWorkspaceUrl = "https://<your-databricks-workspace-url>";
        String patToken = "dapi-<your-personal-access-token>";
        long targetJobId = 123; // 目标作业ID

        // 构建请求体,如需传递参数可添加notebook_params等字段
        String requestBody = String.format("{\"job_id\": %d}", targetJobId);

        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(databricksWorkspaceUrl + "/api/2.1/jobs/run-now"))
                .header("Authorization", "Bearer " + patToken)
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(requestBody, StandardCharsets.UTF_8))
                .build();

        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

        // 处理响应
        System.out.println("触发状态码: " + response.statusCode());
        System.out.println("作业运行信息: " + response.body());
    }
}

3. 扩展:创建并触发新作业

如果需要动态创建作业,可调用/api/2.1/jobs/create接口,调整请求体示例如下:

{
  "name": "Java-triggered Job",
  "new_cluster": {
    "spark_version": "13.3.x-scala2.12",
    "node_type_id": "Standard_DS3_v2",
    "num_workers": 1
  },
  "notebook_task": {
    "notebook_path": "/Users/your-email@domain.com/TargetNotebook"
  }
}

关键注意事项

  • 确保Java程序网络可访问Databricks工作区(若工作区在VNet内,需配置网络打通)
  • PAT令牌请勿硬编码,建议通过环境变量或安全配置文件加载
  • 可通过响应状态码判断操作结果:200/201表示成功,非2xx需检查请求参数或权限
  • 如需传递作业参数,在请求体中添加对应字段(如notebook_params用于笔记本参数,spark_submit_params用于Spark作业参数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:02:13