Databricks Asset Bundlesのジョブにタスクを追加する

この記事では、 Databricks アセット バンドルの Databricks ジョブに追加できるさまざまな種類のタスクの例を示します。 「Databricks アセット バンドルとは何ですか?」を参照してください。 。

ほとんどのジョブ タスク タイプには、サポートされている設定の中にタスク固有の不安がありますが、タスクに渡されるジョブ タスクを定義することもできます。 ジョブ パラメーターでは動的な値の参照がサポートされており、タスク間で実行されるジョブに固有の値を渡すことができます。 「ジョブ実行に関するコンテキストをジョブタスクに渡す」を参照してください。

注:

ジョブタスク設定を上書きできます。 「Databricks アセット バンドルのジョブ タスク設定の上書き」を参照してください。

ヒント

Databricks CLIを使用して既存のジョブのリソース構成を迅速に生成するには、 bundle generate jobコマンドを使用できます。 「バンドル コマンド」を参照してください。

ノートブック タスク

このタスクを使用して、ノートブックを実行します。

次の例では、ノートブック タスクをジョブに追加し、 my_job_run_idという名前のジョブ パラメーターを設定します。 デプロイするノートブックのパスは、このタスクが宣言されているdatabricks.ymlファイルに対する相対パスです。 タスクは、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 リファレンスの POST /api/2.1/ジョブ/create で定義されている create ジョブ操作の要求ペイロードの tasks > notebook_task (YAML 形式で表される) を参照してください。「タスクの種類のオプション」の「ノートブック」および「Databricks ジョブ タスクにパラメーターを渡す」も参照してください。

Python スクリプト タスク

このタスクを使用して、Python ファイルを実行します。

次の例では、Python スクリプト タスクをジョブに追加します。 デプロイする Python ファイルのパスは、このタスクが宣言されている databricks.yml ファイルに対する相対パスです。 このタスクは、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/ジョブ/create で定義されている create ジョブ操作の要求ペイロードの tasks > spark_python_task (YAML 形式で表される) を参照してください。「 タスクの種類のオプション 」の「Python スクリプト」および 「Databricks ジョブ タスクにパラメーターを渡す」も参照してください。

Python wheel タスク

このタスクを使用して、 Python wheelファイルを実行します。

次の例では、 Python wheelタスクをジョブに追加します。 デプロイするPython wheelファイルのパスは、このタスクが宣言されている databricks.yml ファイルに対する相対パスです。 (省略記号は、簡潔にするために省略された内容を示します。

# ...
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/Job/create で定義されているジョブ作成オペレーションのリクエスト ペイロードの を参照してくださいRESTAPI (YAML 形式で表現されています)。Databricksアセット バンドルを使用した ファイルの開発 Python wheelDatabricks」、Python wheel タスク タイプ オプション の「 」および ジョブ タスクへの「渡し」 も参照してください。

JAR タスク

このタスクを使用して JAR を実行します。 ローカル JAR ライブラリ、またはワークスペース、 Unity Catalogボリューム、または外部クラウド ストレージの場所にある JAR ライブラリを参照できます。

次の例では、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/ジョブ/create で定義されている create ジョブ操作の要求ペイロードの tasks > spark_jar_task (YAML 形式で表される) を参照してください。「 タスクの種類のオプション 」の「JAR」および 「Databricks ジョブ タスクにパラメーターを渡す」も参照してください。

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をコピーします。

このタスクに設定できる追加のマッピングについては、REST API リファレンスのPOST /api/2.1/jobs/createで定義されているジョブ作成オペレーションのリクエスト ペイロードのtasks > sql_task > fileを参照してください (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
          # ...
# ...

パイプラインの ID を取得するには、ワークスペースでパイプラインを開き、パイプラインの設定ページのパイプライン詳細タブでパイプライン ID値をコピーします。

このタスクに設定できる追加のマッピングについては、REST API リファレンスのPOST /api/2.1/jobs/createで定義されているジョブ作成オペレーションのリクエスト ペイロードのtasks > pipeline_taskを参照してください (YAML 形式で表現されています)。 Delta Live Tables「 タスク タイプ オプション」 の「 パイプライン」も参照してください。

dbtタスク

このタスクを使用して、1 つ以上の 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をコピーします。

このタスクに設定できる追加のマッピングについては、REST API リファレンスのPOST /api/2.1/jobs/createで定義されているジョブ作成オペレーションのリクエスト ペイロードのtasks > dbt_taskを参照してください (YAML 形式で表現されています)。 「タスク タイプ オプション」の「dbt」も参照してください。

ジョブタスクの実行

このタスクを使用して、別のジョブを実行します。

次の例には、最初のジョブを実行する 2 番目のジョブに実行ジョブ タスクが含まれています。

# ...
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 をコピーします。

このタスクに設定できる追加のマッピングについては、REST API リファレンスのPOST /api/2.1/jobs/createで定義されているジョブ作成オペレーションのリクエスト ペイロードのtasks > run_job_taskを参照してください (YAML 形式で表現されています)。