將任務新增至 Databricks Asset Bundles 中的作業
本文提供您可以在 Databricks 資產套件組合中新增至 Azure Databricks 工作的各種工作類型範例。 請參閱什麼是 Databricks Asset Bundles?。
大部分的工作類型在其支援設定中都有工作特定的參數,但您也可以定義 作業參數, 傳遞給工作。 工作參數支援動態值參考,這可使特定於作業執行的值可以在不同的任務之間傳遞。 請參閱什麼是動態值參考?。
注意
您可以覆寫工作任務設定。 請參閱在 Databricks 資產套裝組合中覆寫作業任務設定。
提示
若要使用 Databricks CLI快速產生現有作業的資源組態,您可以使用 bundle generate job
命令。 請參閱套件組合命令。
筆記本任務
您使用此任務來執行筆記本。
下列範例會將筆記本工作新增至工作,並設定名為 my_job_run_id
的工作參數。 要部署的筆記本的路徑是相對於宣告該任務的設定檔而定的。 該任務從其在 Azure Databricks 工作區中部署的位置取得筆記本。
resources:
jobs:
my-notebook-job:
name: my-notebook-job
tasks:
- task_key: my-notebook-task
notebook_task:
notebook_path: ./my-notebook.ipynb
parameters:
- name: my_job_run_id
default: '{{job.run_id}}'
如需您可以為此任務設定的其他對應關係,請參閱 REST API 參考中以 YAML 格式表示的 POST /api/2.1/jobs/create 建立工作操作的請求承載中的 tasks > notebook_task
。 請參閱工作相關的筆記本任務。
如果/否則 條件任務
condition_task
可讓您將具有 if/else 條件式邏輯的工作新增至作業。 這項任務評估一種可用來控制其他任務執行的條件。 條件工作不需要叢集執行,而且不支援重試或通知。 如需有關 If/else 任務的詳細資訊,請參閱 使用 If/else 任務將分支邏輯新增至工作。
下列範例包含條件工作和筆記本工作,其中筆記本工作只有在作業修復數目小於 5 時才會執行。
resources:
jobs:
my-job:
name: my-job
tasks:
- task_key: condition_task
condition_task:
op: LESS_THAN
left: '{{job.repair_count}}'
right: '5'
- task_key: notebook_task
depends_on:
- task_key: condition_task
outcome: 'true'
notebook_task:
notebook_path: ../src/notebook.ipynb
如需設定此任務的其他映射,請參閱在 REST API 參考中定義的,以 YAML 格式表示的建立工作操作的請求承載 tasks > condition_task
。該操作記錄於 POST /api/2.1/jobs/create。
針對每個任務
for_each_task
可讓您將具有「for each」迴圈的任務新增至您的作業中。 該任務會針對所提供的每個輸入執行一個嵌套任務。 如需 for_each_task
的詳細資訊,請參閱 如何使用 For each
工作在循環中反覆執行另一個工作。
下列範例會將 for_each_task
涵蓋到一個作業中,然後對另一個任務的值進行迴圈處理。
resources:
jobs:
my_job:
name: my_job
tasks:
- task_key: generate_countries_list
notebook_task:
notebook_path: ../src/generate_countries_list.ipnyb
- task_key: process_countries
depends_on:
- task_key: generate_countries_list
for_each_task:
inputs: '{{tasks.generate_countries_list.values.countries}}'
task:
task_key: process_countries_iteration
notebook_task:
notebook_path: ../src/process_countries_notebook.ipnyb
如需可以為此任務設定的其他映射,請參閱在建立作業請求載荷的 tasks > for_each_task
中定義為 REST API 參考的 POST /api/2.1/jobs/create,其格式以 YAML 表示。
Python 指令碼任務
您可以使用這項工作來執行 Python 檔案。
下列範例會將 Python 指令碼工作新增至工作。 要部署的 Python 檔案路徑相對於宣告此工作的設定檔。 這項任務會從其在 Azure Databricks 工作區中部署的位置提取 Python 檔案。
resources:
jobs:
my-python-script-job:
name: my-python-script-job
tasks:
- task_key: my-python-script-task
spark_python_task:
python_file: ./my-script.py
如需其他您可以為這項任務設定的映射,請參閱 REST API 參考中的 tasks > spark_python_task
,在 POST /api/2.1/jobs/create 方法中以 YAML 格式定義的建立作業請求有效負載。 另請參閱用於作業的 Python 指令碼任務。
Python Wheel 任務
您可以使用此工作來執行 Python Wheel 檔案。
下列範例將 Python wheel 任務新增至作業。 要部署的 Python Wheel 檔案的路徑是相對於宣告此任務的設定檔而定的。 請參閱 Databricks Asset Bundles 程式庫相依性。
resources:
jobs:
my-python-wheel-job:
name: my-python-wheel-job
tasks:
- task_key: my-python-wheel-task
python_wheel_task:
entry_point: run
package_name: my_package
libraries:
- whl: ./my_package/dist/my_package-*.whl
如需您可以為此任務設定的其他映射,請參閱 REST API 參考中,在 POST /api/2.1/jobs/create 定義的建立作業請求承載,以 YAML 格式表示的 tasks > python_wheel_task
。 請參閱使用 Databricks 資產捆綁包開發 Python Wheel 檔案和執行工作時的 Python Wheel 任務。
JAR 任務
您可以使用此工作來執行 JAR。 您可以參考本機 JAR 程式庫或工作區中的程式庫、Unity Catalog 磁碟區中的程式庫或外部雲端儲存位置中的程式庫。 請參閱 Databricks Asset Bundles 程式庫相依性。
下列範例會將 JAR 工作新增到任務中。 JAR 的路徑指向指定的磁碟區位置。
resources:
jobs:
my-jar-job:
name: my-jar-job
tasks:
- task_key: my-jar-task
spark_jar_task:
main_class_name: org.example.com.Main
libraries:
- jar: /Volumes/main/default/my-volume/my-project-0.1.0-SNAPSHOT.jar
如需針對此任務設定的其他映射,請參閱 REST API 參考中 POST /api/2.1/jobs/create 所定義的建立作業請求承載中的 tasks > spark_jar_task
,這些內容以 YAML 格式表示。 請參閱JAR 相關工作任務。
SQL 檔案工作
您可以使用這項工作來執行位於工作區或遠端 Git 存放庫的 SQL 檔案。
下列範例會將 SQL 檔案工作新增至工作。 此 SQL 檔案工作會使用指定的 SQL 倉儲來執行指定的 SQL 檔案。
resources:
jobs:
my-sql-file-job:
name: my-sql-file-job
tasks:
- task_key: my-sql-file-task
sql_task:
file:
path: /Users/someone@example.com/hello-world.sql
source: WORKSPACE
warehouse_id: 1a111111a1111aa1
若要取得 SQL 倉儲的標識符,請開啟 [SQL 倉儲的設定] 頁面,然後在 [ 概觀] 索引卷標的 [ 名稱] 欄位的 [名稱] 字段後面複製括號中找到的標識符。
如需為此任務設定的其他映射,請參閱 REST API 參考中定義的 POST /api/2.1/jobs/create,該資料在建立工作操作的請求承載中以 YAML 格式表示。 請參閱工作相關的 SQL 任務。
DLT 流程任務
您可以使用此工作來執行 DLT 管線。 請參閱 什麼是 DLT?。
下列範例會將 DLT 管線工作新增至作業。 此 DLT 管線任務會執行指定的管線。
resources:
jobs:
my-pipeline-job:
name: my-pipeline-job
tasks:
- task_key: my-pipeline-task
pipeline_task:
pipeline_id: 11111111-1111-1111-1111-111111111111
您可以在工作區中開啟管線,然後在管線設定頁面的 [管線詳細資訊] 索引標籤上複製 管線ID 值,以取得管線ID。
如需針對此任務設定的其他對應,請參閱在 REST API 參考中 POST /api/2.1/jobs/create 所定義的建立工作操作請求承載 tasks > pipeline_task
,表達於 YAML 格式中。
DLT 流水線任務,如需作業請參閱。
dbt 任務
您可以使用這項工作來執行一或多個 dbt 命令。 請參閱連線至 dbt Cloud。
下列範例會將 dbt 任務新增至一個任務中。 此 dbt 工作會使用指定的 SQL 倉儲來執行指定的 dbt 命令。
resources:
jobs:
my-dbt-job:
name: my-dbt-job
tasks:
- task_key: my-dbt-task
dbt_task:
commands:
- 'dbt deps'
- 'dbt seed'
- 'dbt run'
project_directory: /Users/someone@example.com/Testing
warehouse_id: 1a111111a1111aa1
libraries:
- pypi:
package: 'dbt-databricks>=1.0.0,<2.0.0'
若要取得 SQL 倉儲的標識符,請開啟 [SQL 倉儲的設定] 頁面,然後在 [ 概觀] 索引卷標的 [ 名稱] 欄位的 [名稱] 字段後面複製括號中找到的標識符。
如需您可以為此任務設定的其他映射,請參閱以 YAML 格式表示,在 tasks > dbt_task
中定義的 REST API 參考,及在建立工作操作的請求承載中定義的 POST /api/2.1/jobs/create。 請參閱 適用於工作的 dbt 任務。
Databricks 資源包中還包含dbt-sql
專案範本,用於定義包含 dbt 任務的工作,以及已部署的 dbt 工作的 dbt 設定檔。 如需 Databricks 資產組合範本的相關信息,請參閱 預設套件組合範本。
執行作業任務
您可以使用此工作來執行另一個工作。
下列範例包含一個在第二個作業中執行用以執行第一個作業的任務。
resources:
jobs:
my-first-job:
name: my-first-job
tasks:
- task_key: my-first-job-task
new_cluster:
spark_version: '13.3.x-scala2.12'
node_type_id: 'i3.xlarge'
num_workers: 2
notebook_task:
notebook_path: ./src/test.py
my_second_job:
name: my-second-job
tasks:
- task_key: my-second-job-task
run_job_task:
job_id: ${resources.jobs.my-first-job.id}
這個範例會使用替代來擷取要執行的工作 ID。 若要從 UI 取得作業的標識符,請在作業設定頁面的 [作業 詳細數據] 索引標籤中,開啟工作區中的作業,並從 [作業標識符] 值複製識別符。
如需設定此任務的其他映射,請參閱 REST API 文檔中的 POST /api/2.1/jobs/create ,了解 YAML 格式的建立工作請求承載中的 tasks > run_job_task
。