Databricks アセットバンドルの開発

この記事では、Databricks Asset Bundleの開発とライフサイクルについて説明します。 Databricks アセット バンドルに関する一般的な情報については、 「Databricks アセット バンドルとは」を参照してください。

バンドルのライフサイクル

バンドルを効果的に使用する方法を理解するには、バンドルの基本的なライフサイクルを理解する必要があります。

  1. バンドルのスケルトンは、プロジェクトに基づいて 作成されます

  2. バンドルプロジェクトはローカルで 開発 されます。 バンドルには、デプロイメント ターゲットなどのインフラストラクチャとワークスペースの設定、ジョブやパイプラインなどの Databricks リソースの設定、ソース ファイルやその他の成果物を定義する構成ファイルが含まれています。

  3. バンドル・プロジェクトが 検証されます。 検証では、バンドル構成内の設定とリソース定義を対応するオブジェクト スキーマと照合して、バンドルが Databricks にデプロイ可能であることを確認します。

  4. バンドルはターゲット ワークスペースにデプロイされます。 通常、バンドルは最初にテストのためにユーザーの個人開発ワークスペースにデプロイされます。 バンドルのテストが完了したら、バンドルをステージングにデプロイし、本番運用ターゲットにデプロイできます。

  5. デプロイされたバンドルで定義されたワークフロー リソースを実行できます。 たとえば、ジョブを実行できます。

  6. バンドルが使用されなくなった場合は、完全に 破棄できます。

次のセクションで説明するように、 Databricks CLI バンドル コマンドを使用して、バンドルを作成、検証、デプロイ、実行、破棄します。

ステップ 1: バンドルを作成する

バンドルの作成を開始するには、次の 3 つの方法があります。

  1. デフォルトのバンドル テンプレートを使用します。

  2. カスタムバンドルテンプレートを使用します。

  3. バンドルを手動で作成します。

デフォルトのバンドル テンプレートを使用する

Databricksデフォルト バンドル テンプレートを使用して、さらにカスタマイズできるスターター バンドルを作成するには、 Databricks CLIバージョン 0.218.0 以降を使用して 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形式で表されます。 databricks.ymlという名前のバンドル構成ファイルが少なくとも 1 つ (1 つだけ) 必要です。追加のバンドル構成ファイルは、databricks.yml ファイルのincludeマッピングで参照する必要があります。

Databricks アセット バンドル構成構文に準拠する YAML ファイルをより簡単かつ迅速に作成するには、次のように、YAML ファイルと JSON スキーマ ファイルのサポートを提供する Visual Studio CodePyCharm ProfessionalIntelliJ IDEA Ultimate などのツールを使用できます。

  1. たとえば、Visual Studio Code Marketplace から YAML 拡張機能をインストールすることで、 YAML 言語サーバーのサポートを Visual Studio Code に追加します。

  2. Databricks CLIバージョン 0.218.0 以降を使用して Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成し、 bundle schema コマンドを実行して出力を JSON ファイルにリダイレクトします。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  3. Visual Studio Code を使用して、現在のディレクトリ内にバンドル構成ファイルを作成するか開きます。 このファイルの名前は databricks.ymlである必要があります。

  4. バンドル設定ファイルの先頭に次のコメントを追加します。

    # yaml-language-server: $schema=bundle_config_schema.json
    

    前のコメントで、Databricks アセット バンドル構成 JSON スキーマ ファイルが別のパスにある場合は、 bundle_config_schema.json スキーマ ファイルへの完全なパスに置き換えます。

  5. 前に追加した YAML 言語サーバー機能を使用します。 詳細については、YAML 言語サーバーのドキュメントを参照してください。

  1. Databricks CLIバージョン 0.218.0 以上を使用してbundle schema コマンドを実行し、出力を JSON ファイルにリダイレクトすることで、Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成してください。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  2. バンドル構成 JSON スキーマファイルを認識するように PyCharm を設定し、「カスタム JSON スキーマを構成する」の手順に従って JSON スキーママッピングを完了します。

  3. PyCharm を使用して、バンドル設定ファイルを作成または開きます。 このファイルの名前は databricks.ymlである必要があります。 入力すると、PyCharmはJSONスキーマの構文とフォーマットをチェックし、コード補完のヒントを提供します。

  1. Databricks CLIバージョン 0.218.0 以上を使用してbundle schema コマンドを実行し、出力を JSON ファイルにリダイレクトすることで、Databricks Asset Bundle 構成 JSON スキーマ ファイルを生成してください。 たとえば、次のように、現在のディレクトリ内に bundle_config_schema.json という名前のファイルを生成します。

    databricks bundle schema > bundle_config_schema.json
    
  2. バンドル構成 JSON スキーマ ファイルを認識するように IntelliJ IDEA を構成し、「カスタム JSON スキーマの構成」の手順に従って JSON スキーマ マッピングを完了します。

  3. 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 は、バンドル構成ファイル内で宣言されているターゲット ワークスペースにデプロイされます。 ターゲット (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

デフォルトにより、以前にデプロイされたジョブ、パイプライン、およびアーティファクトの完全な削除を確認するように求められます。 これらのプロンプトをスキップして自動完全削除を実行するには、 bundle destroy コマンドに --auto-approve オプションを追加します。