最近在做CDP迁移到Azure 云的任务,鉴于databricks中的job参数只能写死,故需在虚拟机上部署,方便参数的可变。
Azure VM 可以部署脚本,用于启动(触发) Databricks 工作流(Workflow)中的作业(Job)。一旦作业被成功触发,实际的计算任务(运行笔记本、JAR文件、Spark作业等)是在你的 Databricks 工作区关联的、配置的云端集群(Databricks集群或Databricks Serverless)上执行的,而不是在Azure VM上执行的。
价值:
-
自动化与集成:你可以将 databricks jobs run-now命令(或其他 CLI 命令)集成到你在 Azure VM 上运行的自动化脚本、持续集成/持续部署(CI/CD)管道或其他应用程序中,从而自动触发 Databricks 工作流。
-
调度替代方案:虽然 Databricks 工作流本身有调度器,但有时你可能想从外部系统(如部署在VM上的调度系统、或者事件驱动的脚本)来触发作业。
-
集中管理:在一个点上(比如特定的管理 VM)管理多个 Databricks 作业的启动。
-
安全与控制:Azure VM 可以配置严格的网络安全规则和管理策略。
使用前的关键配置步骤:
- 安装 Databricks CLI: 确保已在 Azure VM 上成功安装了 Databricks CLI (pip install databricks-cli) 或使用其他安装方法。
- 身份验证: 这是最关键的一步。你必须让运行在 VM 上的 Databricks CLI 能够安全地访问你的 Databricks 工作区:
l 生成访问令牌:
①. 登录到你的 Databricks 工作区。
②. 转到用户设置 -> 开发人员 -> 访问令牌 -> 生成新令牌
③. 记录生成的令牌
l 配置 CLI:在 Azure VM 的命令行中运行
databricks configure --token
系统会依次提示输入:
○ Databricks Host:你的工作区 URL,通常是 https://.azuredatabricks.net
○ Token:粘贴上面生成的访问令牌。
替代方案:对于更安全或自动化的场景(如脚本),可以使用服务主体身份认证(推荐)或直接将主机/令牌设置为环境变量(DATABRICKS_HOST, DATABRICKS_TOKEN),但要注意安全保护(例如使用 Azure Key Vault)
-
触发作业databricks jobs run-now --job-id 。 可以通过 databricks jobs run-now --help查看其他选项,如传递参数。
-
监控运行:
○ 使用 databricks runs list --job-id查看该作业的所有运行实例。
○ 使用databricks runs get-output --run-id获取特定运行 ID 的详细输出和日志(注意:获取的是驱动日志摘要和结果,详细任务日志仍需在 Databricks UI 的 Spark UI 或集群驱动日志中查看)
Databricks上部署spark 任务的方法:
点击Create Job 按钮:
Task name 里填写Job name, Parameters 框内配置参数后点击Create 按钮即可。
生成后可在如下界面找到对应Job ID