能否通过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
相关产品推荐
相关产品推荐

