共用方式為


將工作新增至 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}}"

如需您可以為此任務設定的其他映射,請參閱在 POST /api/2.1/jobs/create 定義的 REST API 參考中,以 YAML 格式表示的建立工作請求承載中的 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

如需您可以為此工作設定的其他對應,請參閱建立作業作業的要求承載中的 tasks > condition_task,如 POST /api/2.1/jobs/create,以 YAML 格式表示。

針對每個任務

for_each_task 可讓您將具有「for each」迴圈的任務新增至您的作業中。 該任務會針對所提供的每個輸入執行一個嵌套任務。 如需 for_each_task的詳細資訊,請參閱 在循環中執行參數化 Azure Databricks 作業任務

下列範例會將 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 參考中 "建立作業" 操作(POST /api/2.1/jobs/create)的請求承載中的 tasks > spark_python_task,以 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

如需您可以為此工作設定的其他對應,請參閱建立作業請求負載中的 tasks > python_wheel_task,如 POST /api/2.1/jobs/create,在 REST API 參考中以 YAML 格式表示。 也請參閱使用 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

您可以為此任務設定其他對應,詳情請參閱 中的建立作業操作要求承載的 tasks > spark_jar_task 欄位,詳見 REST API 參考中的 POST /api/2.1/jobs/create,以 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 倉儲的設定] 頁面,然後在 [ 概觀] 索引卷標的 [ 名稱] 欄位的 [名稱] 字段後面複製括號中找到的標識符。

如需其他您可以為此工作設定的對應,請參閱建立作業的需求載荷中的 tasks > sql_task > file,如 REST API 參考中的 POST /api/2.1/jobs/create,以 YAML 格式表示。 請參閱工作的 SQL 工作

Delta Live Tables 管線工作

您可以使用這項任務來執行 Delta Live Tables 管線。 請參閱 什麼是 Delta Live Tables?

下列範例會將 Delta Live Tables 管線任務新增至一個工作流程。 這個 Delta Live Tables 管線工作會執行指定的管線。

resources:
  jobs:
    my-pipeline-job:
      name: my-pipeline-job
      tasks:
        - task_key: my-pipeline-task
          pipeline_task:
            pipeline_id: 11111111-1111-1111-1111-111111111111

您可以在管線設定頁面的 [管線 詳細數據] 索引卷標上開啟管線,並複製管線標識碼 值,以取得管線標識碼。

關於您可以為此任務設定的其他對應,請參閱在 REST API 參考中所述的 POST /api/2.1/jobs/create 中建立作業操作的請求有效內容中的 tasks > pipeline_task,其以 YAML 格式表示。 請參閱 Delta Live Tables 管線任務,以了解作業

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 倉儲的設定] 頁面,然後在 [ 概觀] 索引卷標的 [ 名稱] 欄位的 [名稱] 字段後面複製括號中找到的標識符。

如需您可以為此工作設定的其他對應,請參閱創建工作的操作要求承載中的 tasks > dbt_task,如 REST API 參考文件中的 POST /api/2.1/jobs/create,以 YAML 格式描述。 請參閱 工作的 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 取得作業的標識符,請在作業設定頁面的 [作業 詳細數據] 索引標籤中,開啟工作區中的作業,並從 [作業標識符] 值複製識別符。

如需您可以為此工作設定的其他對應,請參閱 POST /api/2.1/jobs/create REST API 參考中的建立作業操作的請求承載中的 tasks > run_job_task,並以 YAML 格式表示。