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
を参照してください。