bundle
コマンド グループ
注
この情報は、Databricks CLI バージョン 0.205 以降に適用されます。 Databricks CLI は パブリック プレビュー段階です。
Databricks CLI 使用には、 Databricks ライセンス および Databricks プライバシー通知(使用データのプロビジョニングを含む)が適用されます。
Databricks CLI内のbundle
コマンド グループを使用すると、Databricksジョブ、Delta Live Tablesパイプライン、 MLOpsスタックなどの Databricks ワークフローをプログラムで検証、デプロイ、実行できます。 「Databricks アセット バンドルとは何ですか?」を参照してください。
bundle
コマンドを実行するには、コマンドを databricks bundle
に追加します。bundle
コマンドのヘルプを表示するには、 databricks bundle -h
を実行します。
プロジェクトテンプレートからのバンドルの作成
Databricksのデフォルト アセット バンドル テンプレートを使用して アセットDatabricks Pythonバンドルを作成するには、次のようにbundle init
コマンドを実行し、画面のプロンプトに応答します。
databricks bundle init
カスタム Databricks アセット バンドル テンプレートを使用して Databricks アセット バンドルを作成するには、次のように bundle init
コマンドを実行します。
databricks bundle init <project-template-local-path-or-url> \
--project-dir="</local/path/to/project/template/output>"
関連項目:
バンドル構成スキーマの表示
バンドル構成スキーマを表示するには、次のように bundle schema
コマンドを実行します。
databricks bundle schema
Databricks アセット バンドル構成スキーマを JSON ファイルとして出力するには、 bundle schema
コマンドを実行し、出力を JSON ファイルにリダイレクトします。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json
という名前のファイルを生成できます。
databricks bundle schema > bundle_config_schema.json
バンドルの検証
バンドル構成ファイルの構文が正しいことを検証するには、次のようにバンドル プロジェクトのルートからbundle validate
コマンドを実行します。
databricks bundle validate
デフォルトでは、このコマンドはバンドル ID の概要を返します。
Name: MyBundle
Target: dev
Workspace:
Host: https://my-host.cloud.databricks.com
User: someone@example.com
Path: /Users/someone@example.com/.bundle/MyBundle/dev
Validation OK!
注
bundle validate
コマンドは、対応するオブジェクトのスキーマに見つからないリソース プロパティがバンドル構成ファイルに定義されている場合に警告を出力します。
バンドルの ID とリソースの概要のみを出力する場合は、 bundle summary を使用します。
バンドルのツリーをワークスペースに同期する
bundle sync
コマンドを使用して、ローカル ファイル システム ディレクトリ内のバンドルのファイル変更をリモート Databricks ワークスペース内のディレクトリに一方向同期します。
注
bundle sync
コマンドは、リモートの Databricks ワークスペース内のディレクトリからローカル ファイル システム内のディレクトリにファイルの変更を同期することはできません。
databricks bundle sync
コマンドは databricks sync
コマンドと同じように機能し、生産性の便宜のために提供されています。 コマンドの使用状況については、「 sync コマンド グループ」を参照してください。
バンドル構成ファイルの生成
bundle generate
コマンドを使用して、Databricks ワークスペースに既に存在するジョブ、パイプライン、またはダッシュボードのリソース構成を生成できます。このコマンドは、バンドル プロジェクトの resources
フォルダーにジョブ、パイプライン、またはダッシュボードの *.yml
ファイルを生成し、構成で参照されているノートブックなどのファイルもダウンロードします。
ジョブまたはパイプライン設定の生成
重要
bundle generate
コマンドは、リソース構成を自動生成するための便宜上提供されています。ただし、このジョブまたはパイプライン設定がバンドルに含まれてデプロイされると、新しいリソースが作成され、最初に使用されない限り、既存のリソースは更新されません bundle deployment bind
。 バンドル・リソースのバインドを参照してください。
ジョブまたはパイプラインの設定を生成するには、次のように bundle generate
コマンドを実行します。
databricks bundle generate [job|pipeline] --existing-[job|pipeline]-id [job-id|pipeline-id]
注
現在、このコマンドでサポートされているのは、ノートブック タスクを持つジョブのみです。
たとえば、次のコマンドは、以下の YAML を含む新しいhello_job.yml
ファイルをresources
バンドル プロジェクト フォルダに生成し、 simple_notebook.py
をsrc
プロジェクト フォルダにダウンロードします。
databricks bundle generate job --existing-job-id 6565621249
# This is the contents of the resulting hello_job.yml file.
resources:
jobs:
6565621249:
name: Hello Job
format: MULTI_TASK
tasks:
- task_key: run_notebook
existing_cluster_id: 0704-xxxxxx-yyyyyyy
notebook_task:
notebook_path: ./src/simple_notebook.py
source: WORKSPACE
run_if: ALL_SUCCESS
max_concurrent_runs: 1
ダッシュボード構成の生成
ワークスペース内の既存のダッシュボードの設定を生成するには、 bundle generate
を実行し、ダッシュボードの ID またはワークスペースパスを指定します。
databricks bundle generate dashboard --existing-id [dashboard-id]
databricks bundle generate dashboard --existing-path [dashboard-workspace-path]
ダッシュボードのワークスペース パスは、ワークスペース UI からコピーできます。
たとえば、次のコマンドは、以下の YAML を含む resources
バンドル プロジェクト フォルダーに新しい baby_gender_by_county.dashboard.yml
ファイルを生成し、baby_gender_by_county.lvdash.json
ファイルを src
プロジェクト フォルダーにダウンロードします。
databricks bundle generate dashboard --existing-path "/Workspace/Users/someone@example.com/baby_gender_by_county.lvdash.json"
# This is the contents of the resulting baby_gender_by_county.dashboard.yml file.
resources:
dashboards:
baby_gender_by_county:
display_name: "Baby gender by county"
warehouse_id: aae11o8e6fe9zz79
file_path: ../src/baby_gender_by_county.lvdash.json
ヒント
ダッシュボードを既にデプロイした後で .lvdash.json
ファイルを更新するには、bundle generate dashboard
を実行して既存のダッシュボード リソースのファイルを生成するときに --resource
オプションを使用します。ダッシュボードの更新を継続的にポーリングして取得するには、 --force
オプションと --watch
オプションを使用します。
バンドルリソースをバインドする
bundle deployment bind
コマンドを使用すると、バンドル定義のジョブとパイプラインを Databricks ワークスペース内の既存のジョブとパイプラインにリンクし、Databricks アセット バンドルによって管理されるようにすることができます。 リソースをバインドすると、ワークスペース内の既存の Databricks リソースは、次のbundle deploy
の後にバインドされているバンドルで定義された構成に基づいて更新されます。
ヒント
bind を実行する前に、ワークスペースでバンドルを確認することをお勧めします。
databricks bundle deployment bind [resource-key] [resource-id]
たとえば、次のコマンドは、リソースhello_job
をワークスペース内のリモートの対応するリソースにバインドします。 このコマンドは差分を出力し、リソース バインディングを拒否できます。ただし、確認された場合、バンドル内のジョブ定義に対する更新は、次回バンドルがデプロイされるときに対応するリモート ジョブに適用されます。
databricks bundle deployment bind hello_job 6565621249
バンドル内のジョブまたはパイプラインと、ワークスペース内のリモートの対応する部分との間のリンクを削除する場合は、 bundle deployment unbind
を使用します。
databricks bundle deployment unbind [resource-key]
バンドルの概要を出力する
bundle summary
コマンドは、バンドルの ID とリソースの概要を出力します。これには、 Databricks ワークスペース内のリソースに簡単に移動できるように、リソースのディープ リンクが含まれます。
databricks bundle summary
次の出力例は、ジョブとパイプラインを定義する my_pipeline_bundle
という名前のバンドルの概要です。
Name: my_pipeline_bundle
Target: dev
Workspace:
Host: https://myworkspace.cloud.databricks.com
User: someone@example.com
Path: /Users/someone@example.com/.bundle/my_pipeline/dev
Resources:
Jobs:
my_project_job:
Name: [dev someone] my_project_job
URL: https://myworkspace.cloud.databricks.com/jobs/206000809187888?o=6051000018419999
Pipelines:
my_project_pipeline:
Name: [dev someone] my_project_pipeline
URL: https://myworkspace.cloud.databricks.com/pipelines/7f559fd5-zztz-47fa-aa5c-c6bf034b4f58?o=6051000018419999
ヒント
bundle open
を使用して、Databricks ワークスペース内のリソースに移動することもできます。バンドル・リソースを開くを参照してください。
バンドルのデプロイ
バンドルをリモート ワークスペースにデプロイするには、バンドル プロジェクト ルートからbundle deploy
コマンドを実行します。 コマンド オプションが指定されていない場合は、バンドル構成ファイル内で宣言されているデフォルトのターゲットが使用されます。
databricks bundle deploy
バンドルを特定のターゲットにデプロイするには、バンドル設定ファイル内で宣言されているターゲットの名前とともに -t
(または --target
) オプションを設定します。 たとえば、 dev
という名前で宣言されたターゲットの場合:
databricks bundle deploy -t dev
バンドルは、開発、ステージング、本番運用ワークスペースなど、複数のワークスペースにデプロイできます。 基本的に、 root_path
プロパティはバンドルの一意の ID を決定するもので、デフォルトでは~/.bundle/${bundle.name}/${bundle.target}
になります。 したがって、デフォルトでは、バンドルの ID は、デプロイヤーの ID、バンドルの名前、およびバンドルのターゲット名で構成されます。 これらが異なるバンドル間で同一である場合、これらのバンドルの展開は互いに干渉します。
さらに、バンドル デプロイメントでは、ターゲット ワークスペースに作成されるリソースを、ワークスペース ファイル システムに保存される状態として ID で追跡します。 リソース名は、バンドルのデプロイメントとリソース インスタンスを関連付けるために使用されないことに注意してください。
バンドル構成内のリソースがターゲット ワークスペースに存在しない場合は、作成されます。
バンドル構成内のリソースがターゲット ワークスペース内に存在する場合、そのリソースはワークスペース内で更新されます。
リソースがバンドル構成から削除されると、以前にデプロイされていた場合はターゲット ワークスペースからも削除されます。
リソースとバンドルの関連付けは、バンドル名、バンドル ターゲット、またはワークスペースを変更した場合にのみ解除されます。
bundle validate
を実行すると、これらの値を含むサマリーを出力できます。
ジョブまたはパイプラインを実行する
特定のジョブまたはパイプラインを実行するには、 bundle run
コマンドを使用します。 バンドル構成ファイル内で宣言されたジョブまたはパイプラインのリソース キーを指定する必要があります。 デフォルトでは、バンドル設定ファイル内で宣言された環境が使用されます。 たとえば、デフォルト環境でジョブhello_job
を実行するには、次のコマンドを実行します。
databricks bundle run hello_job
名前dev
で宣言されたターゲットのコンテキスト内でキーhello_job
を使用してジョブを実行するには:
databricks bundle run -t dev hello_job
パイプライン検証を実行する場合は、次の例に示すように、 --validate-only
オプションを使用します。
databricks bundle run --validate-only my_pipeline
ジョブ パラメーターを渡すには、--params
オプションを使用し、その後にコンマ区切りのキーと値のペア (キーはパラメーター名) を付けます。たとえば、次のコマンドは、ジョブhello_job
の名前が message
のパラメーターを HelloWorld
に設定します。
databricks bundle run --params message=HelloWorld hello_job
注
ジョブ タスク オプションを使用して パラメーター をジョブ タスクに渡すこともできますが、ジョブ パラメーターを渡すには --params
オプションを使用することをお勧めします。 ジョブ・パラメーターが定義されていないジョブにジョブ・パラメーターが指定されている場合、またはジョブ・パラメーターが定義されているジョブにタスク・パラメーターが指定されている場合は、エラーが発生します。
既存のジョブの実行またはパイプラインの更新をキャンセルして再開するには、 --restart
オプションを使用します。
databricks bundle run --restart hello_job
バンドルリソースを開く
ワークスペース内のバンドル・リソースに移動するには、バンドル・プロジェクトのルートから bundle open
コマンドを実行し、開くリソースを指定します。 リソース キーが指定されていない場合、このコマンドは、選択するバンドルのリソースの一覧を出力します。
databricks bundle open [resource-key]
たとえば、次のコマンドはブラウザーを起動し、バンドル用に構成されている Databricks ワークスペース内のバンドル内の baby_gender_by_county ダッシュボードに移動します。
databricks bundle open baby_gender_by_county
バンドルを破棄する
警告
バンドルを破棄すると、バンドルの以前にデプロイされたジョブ、パイプライン、およびアーティファクトが完全に削除されます。 この操作は元に戻せません。
以前にデプロイされたジョブ、パイプライン、アーティファクトを削除するには、 bundle destroy
コマンドを実行します。 次のコマンドは、バンドル構成ファイルで定義されている、以前にデプロイされたすべてのジョブ、パイプライン、およびアーティファクトを削除します。
databricks bundle destroy
注
バンドルの ID は、バンドル名、バンドル ターゲット、およびワークスペースで構成されます。 これらのいずれかを変更し、デプロイ前にバンドルを破棄しようとすると、エラーが発生します。
デフォルトにより、以前にデプロイされたジョブ、パイプライン、およびアーティファクトの完全な削除を確認するように求められます。 これらのプロンプトをスキップして自動完全削除を実行するには、 bundle destroy
コマンドに --auto-approve
オプションを追加します。