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
-
Visual Studio Code Marketplace から YAML 拡張機能をインストールするなどして、YAML 言語サーバーのサポートを Visual Studio Code に追加します。
-
Databricks CLI バージョン 0.218.0 以降を使用して Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成し、
bundle schema
コマンドを実行し、出力を JSON ファイルにリダイレクトします。たとえば、次のように、現在のディレクトリ内にbundle_config_schema.json
という名前のファイルを生成します。Bashdatabricks bundle schema > bundle_config_schema.json
-
Visual Studio Code を使用して、現在のディレクトリ内にバンドル構成ファイルを作成するか、開きます。このファイルには
databricks.yml
という名前を付ける必要があります。 -
バンドル設定ファイルの先頭に次のコメントを追加します。
YAML# yaml-language-server: $schema=bundle_config_schema.json
前のコメントで、Databricks Asset Bundle 構成 JSON スキーマ ファイルが異なるパスにある場合は、 bundle_config_schema.json
をスキーマ ファイルへの完全なパスに置き換えます。
- 前に追加した YAML 言語サーバー機能を使用します。詳細については、YAML 言語サーバーのドキュメントを参照してください。
-
Databricks CLI バージョン 0.218.0 以降を使用して Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成し、
bundle schema
コマンドを実行し、出力を JSON ファイルにリダイレクトします。たとえば、次のように、現在のディレクトリ内にbundle_config_schema.json
という名前のファイルを生成します。Bashdatabricks bundle schema > bundle_config_schema.json
-
バンドル設定 JSON スキーマファイルを認識するように PyCharm を設定し、「 カスタム JSON スキーマの設定」の手順に従って JSON スキーママッピングを完了します。
-
PyCharm を使用して、バンドル設定ファイルを作成するか開きます。このファイルには
databricks.yml
という名前を付ける必要があります。入力すると、PyCharm は JSON スキーマの構文と書式設定をチェックし、コード補完のヒントを提供します。
-
Databricks CLI バージョン 0.218.0 以降を使用して Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成し、
bundle schema
コマンドを実行し、出力を JSON ファイルにリダイレクトします。たとえば、次のように、現在のディレクトリ内にbundle_config_schema.json
という名前のファイルを生成します。Bashdatabricks bundle schema > bundle_config_schema.json
-
バンドル構成 JSON スキーマ ファイルを認識するように IntelliJ IDEA を構成し、「 カスタム JSON スキーマの構成」の手順に従って JSON スキーマ マッピングを完了します。
-
IntelliJ IDEAを使用して、バンドル設定ファイルを作成するか開きます。このファイルには
databricks.yml
という名前を付ける必要があります。入力すると、IntelliJ IDEAはJSONスキーマの構文とフォーマットをチェックし、コード補完のヒントを提供します。
ステップ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
オプションを追加します。