Databricks アセット バンドルの開発
この記事では、Databricks アセット バンドルの開発とライフサイクルについて説明します。 Databricks アセット バンドルの一般的な情報については、「Databricks アセット バンドルとは」を参照してください。
バンドルのライフサイクル
バンドルを効果的に使用する方法を理解するには、バンドルの基本的なライフサイクルを理解する必要があります。
- バンドル スケルトンがプロジェクトに基づいて作成されます。
- バンドル プロジェクトがローカルに開発されます。 バンドルには、インフラストラクチャとワークスペースの設定 (デプロイ ターゲットなど)、Databricks リソースの設定 (ジョブやパイプラインなど)、さらにソース ファイルやその他の成果物を定義する構成ファイルが含まれています。
- バンドル プロジェクトが検証されます。 検証では、バンドル構成の設定とリソース定義を対応するオブジェクト スキーマに照らして検証し、バンドルが Databricks にデプロイ可能であることを確認します。
- バンドルがターゲット ワークスペースにデプロイされます。 バンドルがまずテストのためにユーザーの個人用開発ワークスペースにデプロイされるのが、最も一般的です。 バンドルのテストが完了したら、バンドルをステージング、次に運用ターゲットにデプロイできます。
- デプロイされたバンドルで定義されているワークフロー リソースを実行できます。 たとえば、ジョブを実行できます。
- バンドルが使用されなくなったら、完全に破棄できます。
この後のセクションで説明するように、バンドルを作成、検証、デプロイ、実行、破棄するには Databricks CLI バンドル コマンドを使用します。
手順 1: バンドルを作成する
バンドルの作成を始めるには、次の 3 つの方法があります。
- 既定のバンドル テンプレートを使用する。
- カスタム バンドル テンプレートを使用する。
- バンドルを手動で作成します。
既定のバンドル テンプレートを使用する
Azure Databricks の既定のバンドル テンプレートを使用して、さらにカスタマイズできるスターター バンドルを作成するには、Databricks CLI バージョン 0.218.0 以降を使用して bundle 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 つ (唯一のファイルでもある) 含まれている必要があります。 追加のバンドル構成ファイルは、databricks.yml
ファイルの include
マッピングで参照する必要があります。
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.json
Visual Studio Code を使用し、現在のディレクトリ内にバンドル構成ファイルを作成するか、開きます。 このファイルの名前は
databricks.yml
である必要があります。バンドル構成ファイルの先頭に次のコメントを追加します:
# yaml-language-server: $schema=bundle_config_schema.json
Note
前のコメントで、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 を構成し、「Configure a custom JSON schema (カスタム 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
を使ってそのバンドル構成をワークスペース内のリソースにリンクして、それらを同期状態に維持できます。「バンドル構成ファイルを生成する」および「バンドル リソースをバインドする」を参照してください。
手順 3: バンドル構成ファイルを検証する
成果物のデプロイ、またはジョブまたはパイプラインの実行の前に、バンドル構成ファイル内の定義が有効であるか検証する必要があります。 これを行うには、バンドル プロジェクトのルート ディレクトリから bundle validate
コマンドを実行します。 「バンドルを検証する」を参照してください。
databricks bundle validate
検証が成功すると、バンドル ID のサマリーと確認メッセージが返されます。 スキーマを出力するには、databricks bundle schema
コマンドを使用します。 「バンドル構成スキーマを表示する」を参照してください。
手順 4: バンドルをデプロイする
バンドルをデプロイする前に、リモート ワークスペースでワークスペース ファイルが有効になっていることを確認します。 「ワークスペース ファイルとは」を参照してください。
バンドルをリモート ワークスペースにデプロイするには、「バンドルをデプロイする」に説明されているように、バンドル ルートから bundle deploy
コマンドを実行します。 Databricks CLI では、バンドル構成ファイル内で宣言されているターゲット ワークスペースにデプロイします。 「targets」を参照してください。
databricks bundle deploy
バンドルの一意の ID は、その名前、ターゲット、デプロイ元の ID によって定義されます。 これらの属性が異なるバンドル間で同一である場合、これらのバンドルのデプロイは相互に干渉します。 詳細については、「バンドルをデプロイする」を参照してください。
ヒント
BUNDLE_ROOT
環境変数を設定すると、バンドル ルートの外部で databricks bundle
コマンドを実行できます。 この環境変数が設定されていない場合、databricks bundle
コマンドは現在の作業ディレクトリ内を検索してバンドル ルートを見つけようとします。
手順 5: バンドルを実行する
特定のジョブまたはパイプラインを実行するには、「バンドルを実行する」に説明されているように、バンドル構成ファイル内で宣言されているジョブまたはパイプライン キーを指定して、バンドル ルートから bundle run
コマンドを実行します。 リソース キーは、リソースの YAML ブロックの最上位レベルの要素です。 ジョブまたはパイプライン キーを指定しない場合は、使用可能なリソースの一覧から、実行するリソースを選択するように求められます。 -t
オプションを指定しないと、バンドル構成ファイル内で宣言されている既定のターゲットが使われます。 たとえば、既定のターゲットのコンテキスト内でキー hello_job
を指定してジョブを実行するには、次のようにします。
databricks bundle run hello_job
dev
という名前で宣言されたターゲットのコンテキスト内で、キー hello_job
を指定してジョブを実行するには、次のようにします。
databricks bundle run -t dev hello_job
手順 6: バンドルを破棄する
バンドルを使い終えて、以前にデプロイされたジョブ、パイプライン、成果物を削除する場合は、バンドル ルートから bundle destroy
コマンドを実行します。 このコマンドで、バンドル構成ファイルに定義されている、以前にデプロイされたジョブ、パイプライン、成果物をすべて削除します。 「バンドルを破棄する」を参照してください。
databricks bundle destroy
既定では、以前にデプロイされたジョブ、パイプライン、成果物の完全な削除を確認するメッセージが表示されます。 これらのプロンプトをスキップし、自動的に完全削除を実行するには、--auto-approve
オプションを bundle destroy
コマンドに追加します。