共用方式為


自動化工作建立與管理

本文說明如何開始使用開發人員工具,以自動化建立和管理作業。 它會向您介紹 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 使用適用於 Python、Java、Go 或 R 的 Databricks SDK 開發應用程式並建立自定義 Databricks 工作流程。您可以使用 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 命令群組可讓您使用 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。 如果您正在使用本地開發機器,請務必先完成 開始使用適用於 Python 的 Databricks SDK

注意

如果您是從 Databricks Notebook 進行開發,並使用使用 Databricks Runtime 12.2 LTS 和以下的叢集,您必須先安裝適用於 Python 的 Databricks SDK。 請參閱 安裝或升級適用於 Python 的 Databricks SDK

範例:使用 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 刪除作業。

後續步驟