次の方法で共有


Databricks アセット バンドルのジョブにタスクを追加する

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

ほとんどのジョブ タスクの種類では、サポートされている設定の中にタスク固有のパラメーターが含まれますが、タスクに渡すジョブ パラメーターを定義することもできます。 ジョブ パラメーターでは動的値参照がサポートされています。これにより、タスク間でジョブの実行に固有の値を渡すことができます。 「動的値参照とは?」を参照してください。

Note

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

ヒント

Databricks CLI を使用して既存ジョブのリソース構成をすばやく生成するには、bundle generate job コマンドを使用することができます。 bundle コマンドをご参照ください。

ノートブック タスク

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

次の例では、ノートブック タスクをジョブに追加し、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 リファレンスの POST /api/2.1/jobs/create で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > notebook_task を参照してください。 「ジョブの Notebook タスク」を参照してください。

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 で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > spark_python_task を参照してください。 「ジョブの Python スクリプト タスク」も参照してください。

Python ホイール タスク

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

次の例では、Python ホイール タスクをジョブに追加します。 デプロイする Python ホイール ファイルのパスは、このタスクが宣言されている構成ファイルに対する相対パスです。 「Databricks アセット バンドルのライブラリ依存関係」を参照してください。 (簡潔に表示するため、省略されたコンテンツを省略記号で示します。)

# ...
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 ホイール ファイルの開発」と「ジョブの Python ホイール タスク」も参照してください。

JAR タスク

このタスクを使用して JAR を実行します。 ローカル JAR ライブラリ、またはワークスペース内のライブラリ、Unity Catalog ボリューム、または外部クラウド ストレージの場所を参照することができます。 「Databricks アセット バンドルのライブラリ依存関係」を参照してください。

次の例では、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 で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > spark_jar_task を参照してください。 「ジョブの 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 をコピーします。

このタスクに設定できるその他のマッピングについては、REST API リファレンスの POST /api/2.1/jobs/create で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > sql_task > file を参照してください。 「ジョブの 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 で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > pipeline_task を参照してください。 「ジョブの 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 で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > dbt_task を参照してください。 「ジョブの dbt タスク」を参照してください。

Databricks アセット バンドルには、dbt タスクを使用してジョブを定義する dbt-sql プロジェクト テンプレートと、デプロイされた dbt ジョブの dbt プロファイルも含まれています。 Databricks アセット バンドル テンプレートの詳細については、「既定のバンドル テンプレートを使用する」を参照してください。

実行ジョブ タスク

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

次の例には、最初のジョブを実行する 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 で定義され、YAML 形式で表される、ジョブの作成操作の要求ペイロード内の tasks > run_job_task を参照してください。