注
この情報は、Databricks CLI バージョン 0.205 以降に適用されます。 Databricks CLI は パブリック プレビュー段階です。
Databricks CLI の使用には、使用状況データのプロビジョニングを含め、 Databricks ライセンス と Databricks のプライバシーに関する通知が適用されます。
bundle
内の コマンド グループを使用すると、Azure Databricks ジョブ、Lakeflow 宣言パイプライン、MLOps スタックなどの Azure Databricks ワークフローをプログラムで検証、デプロイ、および実行できます。
Databricks アセット バンドルとはを参照してください。
bundle
コマンドは、databricks bundle
に追加して実行します。
bundle
コマンドのヘルプを表示するには、databricks bundle -h
を実行してください。
プロジェクト テンプレートからバンドルを作成する
Python 用の既定の Databricks アセット バンドル テンプレートを使用して Databricks アセット バンドルを作成するには、次のように 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>"
関連項目:
- Databricks Asset Bundle プロジェクト テンプレート
- Databricks アセット バンドルを使用してジョブを開発する
- Databricks アセット バンドルを使用して Lakeflow 宣言パイプラインを開発する
- MLOps スタック用の Databricks アセット バンドル
バンドル構成スキーマを表示する
バンドル構成スキーマを表示するには、次のように 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 sync
コマンドは、ローカル ファイルシステム ディレクトリ内のバンドルのファイル変更と、リモート Azure Databricks ワークスペース内のディレクトリとの一方向の同期を実行します。
注
bundle sync
コマンドは、リモート Azure Databricks ワークスペース内のディレクトリからローカル ファイル システム内のディレクトリにファイルの変更を同期することはできません。
databricks bundle sync
コマンドは、生産性向上のために用意されているものであり、databricks sync
コマンドと同じように機能します。 コマンドの使用方法については、コマンド グループsync
参照してください。
バンドル構成ファイルを生成する
bundle generate
コマンドは、Databricks ワークスペースに既に存在するリソースの構成を生成します。 次のリソースがサポートされています。
既定では、このコマンドは、バンドル プロジェクトの*.yml
フォルダー内のリソースのresources
ファイルを生成し、構成で参照されているノートブックなどのファイルもダウンロードします。
重要
bundle generate
コマンドは、リソース構成を自動生成するために便宜上提供されます。 ただし、リソース構成がバンドルに含まれてデプロイされると、新しいリソースが作成され、 bundle deployment bind
が最初に使用されていない限り、既存のリソースは更新されません。
バンドル リソースのバインドを参照してください。
アプリ構成の生成
ワークスペース内の既存のアプリの構成を生成するには、ワークスペース内のアプリの名前を指定して、 bundle generate app
実行します。
databricks bundle generate app --existing-app-name [app-name]
アプリ名は、ワークスペース UI の [Compute>Apps ] タブから取得できます。
たとえば、次のコマンドは、hello_world.app.yml
バンドル プロジェクト フォルダーに新しいresources
ファイルを生成し、アプリのコマンド構成ファイル app.yaml
やメイン app.py
などのアプリのコード ファイルをダウンロードします。 既定では、コード ファイルはバンドルの src
フォルダーにコピーされます。
databricks bundle generate app --existing-app-name "hello_world"
# This is the contents of the resulting /resources/hello-world.app.yml file.
resources:
apps:
hello_world:
name: hello-world
description: A basic starter application.
source_code_path: ../src/app
ダッシュボード構成の生成
ワークスペース内の既存のダッシュボードの構成を生成するには、 bundle generate dashboard
を実行し、ダッシュボードの ID またはワークスペース パスを指定します。
databricks bundle generate dashboard --existing-id [dashboard-id]
databricks bundle generate dashboard --existing-path [dashboard-workspace-path]
ダッシュボードのワークスペース パスは、ワークスペース UI からコピーできます。
たとえば、次のコマンドは、以下の YAML を含む baby_gender_by_county.dashboard.yml
バンドル プロジェクト フォルダーに新しいresources
ファイルを生成し、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
ファイルを更新するには、--resource
を実行して既存のダッシュボード リソースのファイルを生成するときに、bundle generate dashboard
オプションを使用します。 ダッシュボードの更新プログラムを継続的にポーリングして取得するには、 --force
オプションと --watch
オプションを使用します。
ジョブまたはパイプラインの構成を生成する
ジョブまたはパイプラインの構成を生成するには、 bundle generate job
または bundle generate pipeline
コマンドを実行します。
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:
hello_job:
name: 'Hello Job'
tasks:
- task_key: run_notebook
email_notifications: {}
notebook_task:
notebook_path: ../src/simple_notebook.py
source: WORKSPACE
run_if: ALL_SUCCESS
max_concurrent_runs: 1
バンドル リソースをバインドする
bundle deployment bind
コマンドを使用すると、バンドル定義リソースを Azure Databricks ワークスペース内の既存のリソースにリンクして、Databricks Asset Bundles によって管理されるようにすることができます。 リソースをバインドすると、ワークスペース内の既存の Azure Databricks リソースは、次の bundle deploy
の後にバインドされるバンドルで定義されている構成に基づいて更新されます。
databricks bundle deployment bind [resource-key] [resource-id]
バインドでは、データは再作成されません。 たとえば、カタログ内のデータを含むパイプラインにバインドが適用されている場合は、既存のデータを失うことなく、そのパイプラインにデプロイできます。 さらに、たとえば、具体化されたビューを再計算する必要がないため、パイプラインを再実行する必要はありません。
バインド コマンドは、 --target
フラグと共に使用する必要があります。 たとえば、次を使用して運用デプロイを運用パイプラインにバインドします。 databricks bundle deployment bind --target prod my_pipeline 7668611149d5709ac9-2906-1229-9956-586a9zed8929
ヒント
バインドを実行する前に、ワークスペース内のリソースを確認することをお勧めします。
バインドは、次のリソースでサポートされています。
次のコマンドは、リソース hello_job
をワークスペース内のリモートの対応するリソースにバインドします。 このコマンドは差分を出力し、ユーザーはリソースのバインドを拒否できますが、承認した場合は、次にバンドルがデプロイされる際に、バンドル内のジョブ定義に対するすべての更新が対応するリモート ジョブに適用されます。
databricks bundle deployment bind hello_job 6565621249
バンドル リソースのバインド解除
バンドル内のリソースとそのワークスペース内のリモート 対応するリソースの間のリンクを削除する場合は、次の bundle deployment unbind
使用します。
databricks bundle deployment unbind [resource-key]
たとえば、 hello_job
リソースのバインドを解除するには、次のようにします。
databricks bundle deployment unbind hello_job
バンドルの概要を出力する
bundle summary
コマンドは、Databricks ワークスペース内のリソースに簡単に移動できるように、リソースのディープ リンクなど、バンドルの ID とリソースの概要を出力します。
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
hello_job
という名前で宣言されたターゲットのコンテキスト内で、キー dev
を指定してジョブを実行するには、次のようにします。
databricks bundle run -t dev hello_job
パイプライン検証の実行を実行する場合は、次の例に示すように、--validate-only
オプションを使用します。
databricks bundle run --validate-only my_pipeline
ジョブ パラメーターを渡すには、 オプションを使用し、その後にコンマ区切りのキーと値のペアを指定します。キーはパラメーター名です。 たとえば、次のコマンドでは、message
という名前のパラメーターをジョブ HelloWorld
の hello_job
に設定します。
databricks bundle run --params message=HelloWorld hello_job
注
ジョブ タスク オプションを使用するとジョブ タスクにパラメーターを渡すことができますが、--params
オプションはジョブ パラメーターを渡すための推奨される方法です。 ジョブ パラメーターが定義されていないジョブに対してジョブ パラメーターが指定されている場合、またはジョブ パラメーターが定義されているジョブにタスク パラメーターが指定されている場合、エラーが発生します。
既存のジョブの実行またはパイプラインの更新をキャンセルして再開するには、--restart
オプションを使用します。
databricks bundle run --restart hello_job
--
の後にbundle run
(二重ハイフン) を追加して、バンドルの構成された認証資格情報を使用してスクリプトを実行します。 たとえば、次のコマンドは、現在のユーザーの現在の作業ディレクトリを出力します。
databricks bundle run -- python3 -c 'import os; print(os.getcwd())'
バンドル認証情報は、環境変数を使用して子プロセスに渡されます。 Databricks クライアント統合認証を参照してください。
バンドル リソースを開く
ワークスペース内のバンドル リソースに移動するには、バンドル プロジェクト ルートから 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 は、バンドル名、バンドル ターゲット、ワークスペースで構成されます。 これらのいずれかを変更した後、デプロイする前にバンドルを破棄しようとすると、エラーが発生します。
既定では、以前にデプロイされたジョブ、パイプライン、成果物の完全な削除を確認するメッセージが表示されます。 これらのプロンプトをスキップし、自動的に完全削除を実行するには、--auto-approve
オプションを bundle destroy
コマンドに追加します。