自动创建和管理作业

本文介绍如何开始使用开发人员工具来自动创建和管理作业。 它介绍 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 CLIDatabricks CLI 的身份验证

Databricks CLI 具有 Databricks 功能的命令组,包括一个用于作业的命令组,这些命令包含一组相关命令,这些命令也可以包含子命令。 使用 jobs 命令组,您可以通过执行 createdeleteget等操作来管理作业和作业运行。 由于 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环境变量的群集。 作业运行后,群集会终止。

  1. 将以下 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"
        }
        }
    ]
    }
    
  2. 运行以下命令,将 <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 CLIDatabricks SDK,除非使用的是没有相应 Databricks SDK 的编程语言。

以下示例向 Databricks REST API 发出请求,以检索单个作业的详细信息。 假设已按照 中描述的方式设置了 DATABRICKS_HOSTDATABRICKS_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 中删除作业。

后续步骤