Databricks アセットバンドルの開発
この記事では、 Databricks アセット バンドル の開発とライフサイクルについて説明します。 Databricks アセット バンドルの一般的な情報については、「 Databricks アセット バンドルとは」を参照してください。
バンドルのライフサイクル
バンドルを効果的に使用する方法を理解するには、バンドルの基本的なライフサイクルを理解する必要があります。
- バンドルのスケルトンはプロジェクトに基づいて作成されます。
- バンドルプロジェクトはローカル で開発 されています。 バンドルには、デプロイメント・ターゲットなどのインフラストラクチャーとワークスペースの設定、ジョブやパイプラインなどの Databricks ・リソースの設定、ソース・ファイル、その他のアーティファクトを定義する構成ファイルが含まれています。
- バンドル・プロジェクトが 検証されます。 検証では、バンドル構成の設定とリソース定義を対応するオブジェクト スキーマと照合して、バンドルが Databricks にデプロイ可能であることを確認します。
- バンドルはターゲット ワークスペース にデプロイ されます。 最も一般的には、バンドルは最初にテストのためにユーザーの個人用開発ワークスペースにデプロイされます。 バンドルのテストが完了したら、バンドルをステージング、本番運用ターゲットにデプロイできます。
- デプロイされたバンドルで定義されたワークフローリソース を実行できます。 たとえば、ジョブを実行できます。
- バンドルが使用されなくなった場合、バンドルは永久 に破棄される可能性があります。
Databricks CLI バンドル コマンドを使用して、次のセクションで説明するように、バンドルを作成、検証、デプロイ、実行、破棄します。
ステップ1: バンドルを作成します
バンドルの作成を開始するには、次の 3 つの方法があります。
- デフォルトのバンドルテンプレートを使用します。
- カスタムバンドルテンプレートを使用してください。
- バンドルを手動で作成してください。
デフォルトのバンドルテンプレートを使用する
Databricks デフォルト バンドル テンプレートを使用してスターター バンドルを作成し、さらにカスタマイズするには、バージョン 0.218.0 以降Databricks CLI使用して bundle init
コマンドを実行します。これにより、使用可能なテンプレートの一覧から選択できます。「プロジェクトテンプレートからのバンドルの作成」を参照してください。
databricks bundle init
デフォルト バンドル テンプレートのソース は、databricks/CLI と databricks/mlops-stacks の Github パブリック リポジトリで表示できます。
ステップ 2: バンドルの設定ファイルを入力するに進んでください。
カスタムバンドルテンプレートを使用する
Databricks デフォルト バンドル テンプレート以外のバンドル テンプレートを使用するには、リモート バンドル テンプレートの場所へのローカル パスまたは URL を知っている必要があります。Databricks CLI バージョン 0.218.0 以降を使用して、次のように bundle init
コマンドを実行します。
databricks bundle init <project-template-local-path-or-url>
このコマンドの詳細については、「アセットバンドルプロジェクトテンプレートDatabricks」を参照してください。特定のバンドルテンプレートに関する情報については、バンドルテンプレートプロバイダーのドキュメントを参照してください。
ステップ 2: バンドルの設定ファイルを入力するに進んでください。
バンドルを手動で作成してください
バンドル テンプレートを使用する代わりに手動でバンドルを作成するには、ローカル マシン上にプロジェクト ディレクトリを作成するか、サードパーティの Git プロバイダーを使用して空のリポジトリを作成します。
ディレクトリまたはリポジトリに、入力として 1 つ以上のバンドル設定ファイルを作成します。 これらのファイルはYAML形式で表されます。 少なくとも 1 つ (1 つだけ) のバンドル設定ファイル databricks.yml
という名前が必要です。 追加のバンドル構成ファイルは、databricks.yml
ファイルの include
マッピングで参照する必要があります。
Databricks Asset Bundle 構成構文に準拠した YAML ファイルをより簡単かつ迅速に作成するには、次のように YAML ファイルと JSON スキーマ ファイルのサポートを提供する Visual Studio Code、 PyCharm Professional、 IntelliJ IDEA Ultimate などのツールを使用できます。
- Visual Studio Code
- PyCharm Professional
- IntelliJ IDEA Ultimate
-
Add YAML language server support to Visual Studio Code, for example by installing the YAML extension from the Visual Studio Code Marketplace.
-
Generate the Databricks Asset Bundle configuration JSON schema file using Databricks CLI version 0.218.0 or above to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Use Visual Studio Code to create or open a bundle configuration file within the current directory. This file must be named
databricks.yml
. -
Add the following comment to the beginning of your bundle configuration file:
YAML# yaml-language-server: $schema=bundle_config_schema.json
In the preceding comment, if your Databricks Asset Bundle configuration JSON schema file is in a different path, replace bundle_config_schema.json
with the full path to your schema file.
- Use the YAML language server features that you added earlier. For more information, see your YAML language server’s documentation.
-
Generate the Databricks Asset Bundle configuration JSON schema file by using Databricks CLI version 0.218.0 or above to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure PyCharm to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
Use PyCharm to create or open a bundle configuration file. This file must be named
databricks.yml
. As you type, PyCharm checks for JSON schema syntax and formatting and provides code completion hints.
-
Generate the Databricks Asset Bundle configuration JSON schema file by using Databricks CLI version 0.218.0 or above to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure IntelliJ IDEA to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
Use IntelliJ IDEA to create or open a bundle configuration file. This file must be named
databricks.yml
. As you type, IntelliJ IDEA checks for JSON schema syntax and formatting and provides code completion hints.
ステップ2: バンドルの設定ファイルを入力する
バンドル構成ファイルは、ワークスペースの詳細、アーティファクト名、ファイルの場所、ジョブの詳細、パイプラインの詳細などの設定を指定することで、 Databricks ワークフローを定義します。 通常、バンドル構成には、開発、ステージング、および本番運用のデプロイメント・ターゲットも含まれます。 バンドル設定ファイルの詳細については、「アセットバンドルの設定Databricks」を参照してください。
bundle generate
コマンドを使用して、ワークスペース内の既存のリソースのバンドル構成を自動生成し、bundle deployment bind
を使用してバンドル構成をワークスペース内のリソースにリンクし、それらの同期を維持できます。バンドル構成ファイルの生成およびバンドル・リソースのバインドを参照してください。
ステップ 3: バンドル設定ファイルを検証する
アーティファクトをデプロイしたり、ジョブやパイプラインを実行したりする前に、バンドル設定ファイルの定義が有効であることを確認する必要があります。 これを行うには、バンドル・プロジェクトのルート・ディレクトリーから bundle validate
コマンドを実行します。 バンドルの検証を参照してください。
databricks bundle validate
検証が成功すると、バンドル ID の要約と確認メッセージが返されます。 スキーマを出力するには、 databricks bundle schema
コマンドを使用します。 バンドル構成スキーマの表示を参照してください。
ステップ 4: バンドルをデプロイする
バンドルをデプロイする前に、リモート ワークスペースでワークスペース ファイルが有効になっていることを確認してください。 「ワークスペースファイルとは」を参照してください。
バンドルをリモート ワークスペースにデプロイするには、バンドルのデプロイで説明されているように、バンドル ルートから bundle deploy
コマンドを実行します。Databricks CLI は、バンドル構成ファイル内で宣言されているターゲット ワークスペースにデプロイされます。 「ターゲット」を参照してください。
databricks bundle deploy
バンドルの一意の ID は、その名前、ターゲット、およびデプロイヤの ID によって定義されます。 これらの属性が異なるバンドル間で同一である場合、これらのバンドルのデプロイは互いに干渉します。 詳細については 、「バンドルのデプロイ 」を参照してください。
バンドル ルートの外部で 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 bundle destroy
デフォルトでは、以前にデプロイされたジョブ、パイプライン、およびアーティファクトの完全な削除を確認するように求められます。 これらのプロンプトをスキップして自動的に完全削除を実行するには、bundle destroy
コマンドに --auto-approve
オプションを追加します。