自动创建和管理作业
本文介绍如何开始使用开发人员工具来自动创建和管理作业。 它介绍 Databricks CLI、Databricks SDK 和 REST API。
注释
本文提供了使用 Databricks CLI、Databricks Python SDK 和 REST API 创建和管理作业的示例,作为这些工具的简单介绍。 若要以编程方式管理作业作为 CI/CD 的一部分,请使用 Databricks 资产捆绑包(DAB) 或 Databricks Terraform 提供程序。
比较工具
下表比较了用于以编程方式创建和管理作业的 Databricks CLI、Databricks SDK 和 REST API。 若要了解所有可用的开发人员工具,请参阅 本地开发工具。
工具 | 说明 |
---|---|
Databricks CLI | 使用包装 REST API 的 Databricks 命令行接口 (CLI) 访问 Databricks 功能。 将 CLI 用于一次性任务,例如试验、shell 脚本和直接调用 REST API |
Databricks SDK | 使用 Databricks SDK 开发应用程序和创建自定义 Databricks 工作流,适用于 Python、Java、Go 或 R。可以使用 SDK 与 Databricks 交互,而不是使用 curl 或 Postman 直接发送 REST API 调用。 |
Databricks REST API | 如果上述选项都不适用于特定用例,可以直接使用 Databricks REST API。 将 REST API 直接用于一些用例,例如在采用首选编程语言的 SDK 当前不可用的情况下自动化流程。 |
Databricks CLI 入门
若要安装和配置 Databricks CLI 的身份验证,请参阅安装或更新 Databricks CLI 和 Databricks CLI 的身份验证。
Databricks CLI 具有 Databricks 功能的命令组,包括一个用于作业的命令组,这些命令包含一组相关命令,这些命令也可以包含子命令。 使用 jobs
命令组,您可以通过执行 create
、delete
和 get
等操作来管理作业和作业运行。 由于 CLI 包装 Databricks REST API,因此大多数 CLI 命令映射到 REST API 请求。 例如,databricks jobs get
映射到 GET/api/2.2/jobs/get
。
若要输出作业命令组、单个命令或子命令的更详细的用法和语法信息,请使用 h
标志:
databricks jobs -h
databricks jobs <command-name> -h
databricks jobs <command-name> <subcommand-name> -h
示例:使用 CLI 检索 Databricks 任务
若要打印有关工作区中单个作业的信息,请运行以下命令:
$ databricks jobs get <job-id>
databricks jobs get 478701692316314
此命令返回 JSON:
{
"created_time":1730983530082,
"creator_user_name":"someone@example.com",
"job_id":478701692316314,
"run_as_user_name":"someone@example.com",
"settings": {
"email_notifications": {
"no_alert_for_skipped_runs":false
},
"format":"MULTI_TASK",
"max_concurrent_runs":1,
"name":"job_name",
"tasks": [
{
"email_notifications": {},
"notebook_task": {
"notebook_path":"/Workspace/Users/someone@example.com/directory",
"source":"WORKSPACE"
},
"run_if":"ALL_SUCCESS",
"task_key":"success",
"timeout_seconds":0,
"webhook_notifications": {}
},
{
"depends_on": [
{
"task_key":"success"
}
],
"disable_auto_optimization":true,
"email_notifications": {},
"max_retries":3,
"min_retry_interval_millis":300000,
"notebook_task": {
"notebook_path":"/Workspace/Users/someone@example.com/directory",
"source":"WORKSPACE"
},
"retry_on_timeout":false,
"run_if":"ALL_SUCCESS",
"task_key":"fail",
"timeout_seconds":0,
"webhook_notifications": {}
}
],
"timeout_seconds":0,
"webhook_notifications": {}
}
}
示例:使用 CLI 创建 Databricks 作业
以下示例使用 Databricks CLI 创建 Databricks 作业。 此作业包含运行指定笔记本的单个作业任务。 此笔记本依赖于特定版本的 wheel
PyPI 包。 若要运行此任务,作业会临时创建导出名为 PYSPARK_PYTHON
环境变量的群集。 作业运行后,群集会终止。
将以下 JSON 复制并粘贴到文件中。 可以通过从作业页 UI 中选择 “查看 JSON”选项来访问任何现有作业的 JSON 格式。
{ "name": "My hello notebook job", "tasks": [ { "task_key": "my_hello_notebook_task", "notebook_task": { "notebook_path": "/Workspace/Users/someone@example.com/hello", "source": "WORKSPACE" } } ] }
运行以下命令,将
<file-path>
替换为刚刚创建的文件的路径和名称。databricks jobs create --json @<file-path>
Databricks SDK 入门
Databricks 提供 SDK,使你能够使用常用的编程语言(如 Python、Java 和 Go)自动执行作。 本部分介绍如何开始使用 Python SDK 创建和管理 Databricks 作业。
可以从 Databricks 笔记本或本地开发计算机使用 Databricks SDK。 如果使用本地开发计算机,请确保首先完成 Databricks SDK for Python 入门。
注释
如果要从 Databricks 笔记本进行开发并使用使用 Databricks Runtime 12.2 LTS 及更低版本群集,则必须首先安装用于 Python 的 Databricks SDK。 请参阅安装或升级 Databricks SDK for Python。
示例:使用 Python SDK 创建 Databricks 作业
以下示例笔记本代码创建运行现有笔记本的 Databricks 作业。 它会使用提示检索现有笔记本的路径和相关作业设置。
首先,请确保已安装正确的 SDK 版本:
%pip install --upgrade databricks-sdk==0.40.0
%restart_python
接下来,若要使用笔记本任务创建作业,请运行以下命令,回答提示:
from databricks.sdk.service.jobs import JobSettings as Job
from databricks.sdk import WorkspaceClient
job_name = input("Provide a short name for the job, for example, my-job: ")
notebook_path = input("Provide the workspace path of the notebook to run, for example, /Users/someone@example.com/my-notebook: ")
task_key = input("Provide a unique key to apply to the job's tasks, for example, my-key: ")
test_sdk = Job.from_dict(
{
"name": job_name ,
"tasks": [
{
"task_key": task_key,
"notebook_task": {
"notebook_path": notebook_path,
"source": "WORKSPACE",
},
},
],
}
)
w = WorkspaceClient()
j = w.jobs.create(**test_sdk.as_shallow_dict())
print(f"View the job at {w.config.host}/#job/{j.job_id}\n")
Databricks REST API 入门
注释
Databricks 建议使用 Databricks CLI 和 Databricks SDK,除非使用的是没有相应 Databricks SDK 的编程语言。
以下示例向 Databricks REST API 发出请求,以检索单个作业的详细信息。 假设已按照 中描述的方式设置了 DATABRICKS_HOST
和 DATABRICKS_TOKEN
环境变量并执行了 Azure Databricks 个人访问令牌身份验证。
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.2/jobs/get" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data '{ "job": "11223344" }'
有关使用 Databricks REST API 的信息,请参阅 Databricks REST API 参考文档。
清除
若要删除刚刚创建的任何作业,请从 Databricks CLI 运行 databricks jobs delete <job-id>
,或直接从 Databricks 工作区 UI 中删除作业。
后续步骤
- 若要详细了解 Databricks CLI,请参阅 什么是 Databricks CLI? 和 Databricks CLI 命令 了解其他命令组。
- 若要详细了解 Databricks SDK,请参阅 将 SDK 与 Azure Databricks配合使用。
- 若要详细了解使用 Databricks 的 CI/CD,请参阅 Databricks 资产捆绑包、Databricks Terraform 提供程序以及 Databricks Terraform CDKTF。
- 有关所有开发人员工具的综合概述,请参阅 本地开发工具。