宣言的自動化バンドルでジョブの問題を構成する
バンドル変数とジョブの問題は宣言型オートメーション バンドルで連携して動作し、ランタイム時に環境固有の変数を暫定的にオーバーライドできるようにします。 バンドル変数は設定ファイルで定義され、デプロイ時に解決されます。ジョブの問題はジョブ実行時に解決されるため、再デプロイせずに値をオーバーライドできます。
バンドル変数またはジョブの問題
値をいつ変更する必要があるかに基づいて、変数を使用するかジョブ問題を使用するかを選択します。
値が変化した場合… | 使用 | 例 |
|---|---|---|
環境ごと(開発、ステージング、本番) | バンドル変数 | クラスターサイズ、ウェアハウスID |
ジョブ実行ごと | ジョブパラメーター | 処理日、ソーステーブル |
タスクごとにジョブが存在しない場合 | タスク | タスク固有のファイルパス |
変数を使用してジョブを設定しても大丈夫
Databricks 、ジョブの問題の確実性としてバンドル変数を使用することを推奨しています。 これにより、実行時にオーバーライドできる環境固有の安全性が得られます。
次の例では、開発デプロイメントのcatalog問題はbiz_devに設定されます。 本番環境へのデプロイの場合、デフォルト値はbiz_prodになります。
# databricks.yml
variables:
default_catalog:
description: Environment-specific catalog
default: dev_catalog
targets:
dev:
variables:
default_catalog: biz_dev
prod:
variables:
default_catalog: biz_prod
resources:
jobs:
etl_pipeline:
name: etl_pipeline
parameters:
- name: catalog
default: ${var.default_catalog}
- name: processing_date
default: '{{job.start_time.iso_date}}'
- name: mode
default: incremental
tasks:
- task_key: process_data
notebook_task:
notebook_path: ./notebooks/process.py
制限事項
バンドル検証では、同じジョブ内でジョブレベルparametersとタスクレベルbase_parametersを同時に使用することはできません。この制限はAPIに起因するものです。ジョブレベルのparametersブロックを追加する場合は、タスクレベルのbase_parametersもすべてジョブレベルに移動します。
resources:
jobs:
my_job:
parameters:
- name: catalog
default: dev
- name: schema
default: default
tasks:
- task_key: task1
notebook_task:
notebook_path: ./notebook.py
タスク固有の課題が必要で、ジョブレベルのparametersブロックがない場合は、タスクでbase_parametersを使用します。 ジョブ レベルのタスクを追加した後、すべてのタスクをジョブ レベルに移動します。
ランタイム時に問題をオーバーライドする
ジョブが実行されるときにジョブの問題値をオーバーライドするには、新しい値を渡します。
- CLI
- REST API
- UI
コマンド フラグがジョブ保留であることを示すには、二重ハイフン ( -- ) を使用します。 「パスジョブの問題」を参照してください。
databricks bundle run my_job -- --catalog=prod --mode=full_refresh
{
"job_id": 123,
"job_parameters": {
"catalog": "prod",
"mode": "full_refresh"
}
}
- Databricksワークスペースでジョブを開きます。
- 今すぐ実行 をクリックします。
- 異なる問題で実行するオプションを選択します。
異なる設定でのジョブの実行を参照してください。
トラブルシューティング
次のセクションは、ジョブ割り当てを使用していくつかの一般的な問題を解決するのに役立ちます。
問題の値はランタイム時に変更されません
バンドル変数はデプロイ時に解決されます。ランタイム時にオーバーライドできる値が必要な場合は、タスク コードまたはタスク構成内の${var.name}参照としてではなく、バンドル変数を暫定として使用してジョブの問題として定義します。 一度デプロイすると、ジョブの問題は再デプロイせずに実行時に上書きできます。
ノートブックでは利用できません
ジョブ問題がノートブックで利用できない場合は、次のすべてを確認してください。
- 問題は Job
parametersセクションで定義されています。 - ノートブックは、
dbutils.widgets.get("name")を使用して各論点にアクセスします。 - 問題名は大文字小文字も含めて完全に一致します。
- バンドルは、追加または名前変更後に再デプロイされました。