自動化工作建立與管理
本文說明如何開始使用開發人員工具,以自動化建立和管理作業。 它會向您介紹 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
命令群組可讓您使用 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。 如果您正在使用本地開發機器,請務必先完成 開始使用適用於 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 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,請參閱 使用 Azure Databricks 搭配 SDK。
- 若要深入瞭解使用 Databricks 的 CI/CD,請參閱 Databricks Asset Bundles 、Databricks Terraform 提供者 和 Databricks 的 Terraform CDKTF。
- 如需所有開發人員工具的完整概觀,請參閱 本機開發工具。