共用方式為


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

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 tasks > notebook_task,如 REST API 參考中的 POST /api/2.1/jobs/create 所定義,以 YAML 格式表示。 請參閱工作的筆記本工作

如果/否則 條件任務

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,如 REST API 參考中的 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

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 tasks > spark_python_task,如 REST API 參考中的 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

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 tasks > python_wheel_task,如 REST API 參考中的 POST /api/2.1/jobs/create 所定義,以 YAML 格式表示。 也請參閱使用 Databricks 資產套件組合開發 Python Wheel 檔案工作的 Python Wheel 任務

JAR 工作

您可以使用此工作來執行 JAR。 您可以參考本機 JAR 程式庫或工作區、Unity 目錄磁碟區或外部雲端儲存位置中的程式庫。 請參閱 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 倉儲的 ID,請開啟 SQL 倉儲的設定頁面,然後複製在 [概觀] 索引標籤的 [名稱] 欄位中倉儲名稱後括號內的 ID。

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 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 管線工作會執行指定的管線。

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。

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 tasks > pipeline_task,如 REST API 參考中的 POST /api/2.1/jobs/create 所定義,以 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 倉儲的 ID,請開啟 SQL 倉儲的設定頁面,然後複製在 [概觀] 索引標籤的 [名稱] 欄位中倉儲名稱後括號內的 ID。

如需您可以為此工作設定的其他對應,請參閱建立工作作業的要求酬載中的 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 取得工作的 ID,請開啟工作區中的工作,並從工作設定頁面的 [工作詳細資料] 索引標籤 [工作 ID] 值複製 ID。

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