この記事では、Databricks アセット バンドルの開発とライフサイクルについて説明します。 Databricks アセット バンドルの一般的な情報については、「Databricks アセット バンドルとは」を参照してください。
バンドルのライフサイクル
バンドルを効果的に使用する方法を理解するには、バンドルの基本的なライフサイクルについて理解する必要があります。
- プロジェクトに基づいてバンドル スケルトンが作成されます。
- バンドル プロジェクトがローカルで開発されます。 バンドルには、インフラストラクチャとワークスペースの設定 (デプロイ ターゲットなど)、Databricks リソースの設定 (ジョブやパイプラインなど)、さらにソース ファイルやその他の成果物を定義する構成ファイルが含まれています。
- バンドル プロジェクトが検証されます。 検証では、バンドル構成の設定とリソース定義を対応するオブジェクト スキーマに照らして検証が行われ、バンドルが Databricks にデプロイ可能であることが確認されます。
- バンドルがターゲット ワークスペースにデプロイされます。 最も一般的なバンドルは、テストのためにユーザーの個人用開発ワークスペースに最初にデプロイされます。 バンドルのテストが完了したら、バンドルをステージングにデプロイし、その後、運用環境のターゲットにデプロイできます。
- デプロイされたバンドルで定義されたワークフロー リソースを実行できます。 たとえば、ジョブを実行できます。
- バンドルが使用されなくなったら、完全に破棄できます。
以降のセクションで説明するように、バンドルを作成、検証、デプロイ、実行、破棄するには Databricks CLI バンドル コマンドを使用します。
手順 1: バンドルを作成する
バンドルの作成を始めるには、次の 3 つの方法があります。
- 既定のバンドル テンプレートを使用する。
- カスタム バンドル テンプレートを使用する。
- バンドルを手動で作成する。
既定のバンドル テンプレートを使用する
Azure Databricks の既定のバンドル テンプレートを使用して、さらにカスタマイズ可能なスターター バンドルを作成するには、Databricks CLI バージョン 0.218.0 以上を使用して bundle init コマンドを実行します。このコマンドを実行すると、使用可能なテンプレートの一覧から選択することができます。
databricks バンドル init を参照してください。
databricks bundle init
databricks/cli および databricks/mlops-stacks Github パブリック リポジトリで、既定のバンドル テンプレートのソースを表示することができます。
「手順 2: バンドル構成ファイルに入力する」に進みます。
カスタム バンドル テンプレートを使用する
Azure Databricks の既定のバンドル テンプレート以外のバンドル テンプレートを使用するには、ローカル パスまたはリモート バンドル テンプレートの場所の URL が必要です。
Databricks CLI バージョン 0.218.0 以上を使って、次のように bundle init コマンドを実行します。
databricks bundle init <project-template-local-path-or-url>
このコマンドの詳細については、「Databricks アセット バンドル プロジェクト テンプレート」を参照してください。 特定のバンドル テンプレートの詳細については、バンドル テンプレート プロバイダーのドキュメントを参照してください。
「手順 2: バンドル構成ファイルに入力する」に進みます。
バンドルを手動で作成する
バンドル テンプレートを使用せずに手動でバンドルを作成するには、ローカル コンピューター上にプロジェクト ディレクトリ、またはサード パーティの Git プロバイダーを使用して空のリポジトリを作成します。
ディレクトリまたはリポジトリで、入力として 1 つ以上のバンドル構成ファイルを作成します。 これらのファイルは YAML 形式で表されます。
databricks.yml という名前のバンドル構成ファイルが少なくとも 1 つ (かつ唯一) 含まれている必要があります。 追加のバンドル構成ファイルは、include ファイルの databricks.yml マッピングで参照する必要があります。
Databricks のアセット バンドル構成構文に準拠した YAML ファイルをもっと簡単にすばやく作成するには、次のように YAML ファイルおよび JSON スキーマ ファイルのサポートが提供される Visual Studio Code、PyCharm Professional、またはIntelliJ IDEA Ultimate などのツールを使用できます。
Visual Studio Code
Visual Studio Code Marketplace から YAML 拡張機能をインストールするなどして、Visual Studio Code に YAML 言語サーバーのサポートを追加します。
Databricks CLI バージョン 0.218.0 以上を使用して
bundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトして、Databricks アセット バンドル構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内にbundle_config_schema.jsonというファイルを生成します。databricks bundle schema > bundle_config_schema.jsonVisual Studio Code を使用し、現在のディレクトリ内にバンドル構成ファイルを作成するか開きます。 このファイルの名前は
databricks.ymlである必要があります。バンドル構成ファイルの先頭に次のコメントを追加します。
# yaml-language-server: $schema=bundle_config_schema.json注
前のコメントで、Databricks アセット バンドル構成 JSON スキーマ ファイルが別のパスにある場合は、
bundle_config_schema.jsonをスキーマ ファイルへの完全パスに置き換えます。前の手順で追加した YAML 言語サーバー機能を使用します。 詳細については、YAML 言語サーバーのドキュメントを参照してください。
PyCharm Professional
Databricks CLI バージョン 0.218.0 以上を使用して
bundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトして、Databricks アセット バンドル構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内にbundle_config_schema.jsonというファイルを生成します。databricks bundle schema > bundle_config_schema.jsonバンドル構成 JSON スキーマ ファイルが認識されるように PyCharm を構成し、「カスタム JSON スキーマを構成する」の手順に従って、JSON スキーマ マッピングを完成させます。
PyCharm を使用してバンドル構成ファイルを作成するか開きます。 このファイルの名前は
databricks.ymlである必要があります。 入力すると、PyCharm により JSON スキーマの構文と書式設定がチェックされて、コード補完のヒントが表示されます。
IntelliJ IDEA Ultimate
Databricks CLI バージョン 0.218.0 以上を使用して
bundle schemaコマンドを実行し、出力を JSON ファイルにリダイレクトして、Databricks アセット バンドル構成 JSON スキーマ ファイルを生成します。 たとえば、次のように、現在のディレクトリ内にbundle_config_schema.jsonというファイルを生成します。databricks bundle schema > bundle_config_schema.jsonバンドル構成 JSON スキーマ ファイルが認識されるように IntelliJ IDEA を構成し、「カスタム JSON スキーマを構成する」の手順に従って、JSON スキーマ マッピングを完成させます。
IntelliJ IDEA を使用してバンドル構成ファイルを作成するか開きます。 このファイルの名前は
databricks.ymlである必要があります。 入力すると、IntelliJ IDEA により JSON スキーマの構文と書式設定がチェックされて、コード補完のヒントが表示されます。
手順 2: バンドル構成ファイルに入力する
バンドル構成ファイルでは、ワークスペースの詳細、成果物の名前、ファイルの場所、ジョブの詳細、パイプラインの詳細などの設定を指定して、Azure Databricks ワークフローを定義します。 バンドル構成には通常、開発、ステージング、運用環境のデプロイ ターゲットも含まれます。 バンドル構成ファイルの詳細については、「Databricks アセット バンドルの構成」を参照してください。
bundle generate コマンドを使用すると、ワークスペース内の既存のリソースのバンドル構成を自動生成し、bundle deployment bindを使用して、バンドル構成をワークスペース内のリソースにリンクして同期を維持できます。databricks バンドルの生成と databricks バンドルのデプロイ バインドに関する説明を参照してください。
手順 3: バンドル構成ファイルを検証する
成果物のデプロイ、またはジョブまたはパイプラインの実行の前に、バンドル構成ファイル内の定義が有効であることを検証する必要があります。 これを行うには、バンドル プロジェクトのルート ディレクトリから bundle validate コマンドを実行します。
databricks バンドルの検証を参照してください。
databricks bundle validate
検証が成功した場合、バンドル ID の要約と確認メッセージが返されます。 スキーマを出力するには、databricks bundle schema コマンドを使用します。
databricks バンドル スキーマを参照してください。
手順 4: バンドルをデプロイする
バンドルをデプロイする前に、リモート ワークスペースでワークスペース ファイルが有効になっていることを確認します。 「ワークスペース ファイルとは」をご覧ください。
バンドルをリモート ワークスペースにデプロイするには、「bundle deploy バンドルのデプロイ」の説明に従って、バンドル ルートから コマンドを実行します。 Databricks CLI は、バンドル構成ファイル内で宣言されているターゲット ワークスペースにデプロイされます。 「ターゲット」を参照してください。
databricks bundle deploy
バンドルの一意の ID は、その名前、ターゲット、およびデプロイ元の ID によって定義されます。 これらの属性が異なるバンドル間で同一である場合、これらのバンドルのデプロイは相互に干渉します。 詳細については、 databricks バンドルのデプロイ に関するページを参照してください。
ヒント
databricks bundle 環境変数を設定することにより、バンドル ルートの外部で BUNDLE_ROOT コマンドを実行できます。 この環境変数が設定されていない場合、databricks bundle コマンドは現在の作業ディレクトリ内を検索してバンドル ルートを見つけようとします。
手順 5: バンドルを実行する
特定のジョブまたはパイプラインを実行するには、「bundle run バンドルの実行」で説明されているように、バンドル構成ファイル内で宣言されたジョブまたはパイプライン キーを指定して、バンドル ルートから コマンドを実行します。 リソース キーは、リソースの YAML ブロックの最上位要素です。 ジョブまたはパイプライン キーを指定しない場合、使用可能なリソースの一覧から、実行するリソースを選択するよう求められます。
-t オプションを指定しない場合、バンドル構成ファイル内で宣言されている既定のターゲットが使用されます。 たとえば、既定のターゲットのコンテキスト内でキー hello_job を指定してジョブを実行するには、次のようにします。
databricks bundle run hello_job
hello_job という名前で宣言されたターゲットのコンテキスト内で、キー dev を指定してジョブを実行するには、次のように指定します。
databricks bundle run -t dev hello_job
手順 6: バンドルを破棄する
警告
バンドルを破棄すると、バンドルの以前にデプロイされたジョブ、パイプライン、成果物が完全に削除されます。 この削除操作は元に戻すことができません。
バンドルの使用が完了して、以前にデプロイしたジョブ、パイプライン、成果物を削除する場合、バンドル ルートから bundle destroy コマンドを実行します。 このコマンドを実行すると、バンドル構成ファイルで定義され、それまでにデプロイされたジョブ、パイプライン、成果物がすべて削除されます。
databricks バンドルの破棄を参照してください。
databricks bundle destroy
既定では、以前にデプロイされたジョブ、パイプライン、成果物の完全な削除を確認するメッセージが表示されます。 これらのプロンプトをスキップし、自動的に完全削除を実行するには、--auto-approve オプションを bundle destroy コマンドに追加します。