Databricks アセット バンドルとは何ですか?

Databricks Asset Bundles (DAB) は、Databricks プラットフォームの複雑なデータ分析および機械学習プロジェクトの開発を合理化するための新しいツールです。 バンドルを使用すると、単一の簡潔な宣言型 YAML 構文を使用してソフトウェア開発ワークフローに CI/CD 機能が提供されるため、アクティブな開発中の複雑なプロジェクトの管理が容易になります。 バンドルを使用してプロジェクトのテスト、展開、構成管理を自動化すると、テンプレート化されたプロジェクトとして組織全体でソフトウェアのベスト プラクティスを推進しながら、エラーを減らすことができます。

バンドルは、プロジェクトのソース ファイルと一緒にメタデータを含める方法を提供します。 バンドルを使用してプロジェクトをデプロイする場合、このメタデータはインフラストラクチャやその他のリソースのプロビジョニングに使用されます。 プロジェクトのソース ファイルとメタデータのコレクションは、単一のバンドルとしてターゲット環境にデプロイされます。

バンドルには、次の部分が含まれます。

  • 必要なクラウド インフラストラクチャとワークスペースの構成

  • ビジネス ロジックを含むソース ファイル (ノートブックや Python ファイルなど)

  • DatabricksDatabricksジョブ、Delta Live Tables パイプライン、モデルサービング エンドポイント、MLflow エクスペリメント、 登録モデルなどの リソースの定義と設定MLflow

  • 単体テストと統合テスト

Databricks アセット バンドルはいつ使用する必要がありますか?

Databricks アセット バンドルは、Databricks プロジェクトを管理するためのInfrastructure-as-Code (IaC) アプローチです。 複数のコントリビューターと自動化が不可欠であり、継続的インテグレーションとデプロイ (CI/CD) が要件である複雑なプロジェクトを管理する場合に使用します。 バンドルは、ソース コードと共に作成および保守する YAML テンプレートとファイルを使用して定義および管理されるため、IaC が適切なアプローチであるシナリオに適切にマップされます。

バンドルの理想的なシナリオには、次のようなものがあります。

  • チームベースの環境でデータ分析および機械学習プロジェクトを開発します。 バンドルは、さまざまなソースファイルを効率的に整理および管理するのに役立ちます。 これにより、スムーズなコラボレーションと合理化されたプロセスが保証されます。

  • 機械学習の問題をより迅速に反復します。 機械学習パイプライン リソース (トレーニングやバッチ推論ジョブなど) を、最初から本番運用のベストプラクティスに従った機械学習プロジェクトを使用して管理します。

  • デフォルトの権限、サービスプリンシパル、CI/CD 設定を含むカスタムバンドルテンプレートを作成して、新しいプロジェクトの組織標準を設定します。

  • 規制コンプライアンス: 規制コンプライアンスが重大な懸念事項である業界では、バンドルはコードとインフラストラクチャ作業のバージョン管理された履歴を維持するのに役立ちます。 これにより、ガバナンスが支援され、必要なコンプライアンス基準が満たされます。

Databricks アセットバンドルのしくみ

バンドル メタデータは、Databricks プロジェクトの成果物、リソース、および構成を指定する YAML ファイルを使用して定義されます。 この YAML ファイルは、手動で作成することも、バンドル テンプレートを使用して生成することもできます。 その後、Databricks CLI を使用して、これらのバンドル YAML ファイルを使用してバンドルを検証、デプロイ、実行できます。 バンドル プロジェクトは、 IDEs 、ターミナル、またはDatabricks内から直接実行できます。 この記事では、Databricks CLI の使用について説明します。

バンドルは、手動で作成することも、テンプレートに基づいて作成することもできます。 Databricks CLI は、単純なユースケース向けのデフォルト テンプレートを提供しますが、より具体的なジョブや複雑なジョブの場合は、カスタム バンドル テンプレートを作成して、チームのベスト プラクティスを実装し、共通の構成の一貫性を保つことができます。

Databricks アセット バンドルの表現に使用される YAML 構成の詳細については、 「Databricks アセット バンドルの構成」を参照してください。

バンドルを使用するように環境を構成する

Databricks CLI を使用すると、コマンド ラインからバンドルを簡単にデプロイできます。 次のコマンドを実行すると、Databricks CLI がインストールされているかどうか、および使用している現在のバージョンを確認できます。

databricks --version

注:

Databricks CLI バージョン 0.218.0 以上が必要です。 Databricks CLI をインストールするには、 「Databricks CLI のインストールまたは更新」を参照してください。

Databricks CLI をインストールした後、リモート Databricks ワークスペースが正しく構成されていることを確認します。 バンドルでは、ワークスペース ファイル機能を有効にする必要があります。この機能は、 .py.ymlファイルなど、Databricks ノートブック以外のファイルの操作をサポートしているためです。 Databricks Runtime バージョン 11.2 (以降) を使用している場合、この機能はデフォルトで有効になっている必要があります。

認証

Databricks には、いくつかの認証方法が用意されています。 Databricks では、次のいずれかの方法を使用して認証することをお勧めします。

  • Web ブラウザーを使用してターゲットの Databricks ワークスペースにログインする手動ワークフロー (Databricks CLI によってプロンプトが表示された場合) などの 有人 認証シナリオでは、OAuth ユーザー対マシン (U2M) 認証を使用します。 この方法は、Databricks アセットバンドルの入門チュートリアルを使用したエクスペリメントや、バンドルの迅速な開発に最適です。

  • その時点で Web ブラウザーを使用してターゲットの Databricks ワークスペースにログインする機会がない完全に自動化されたワークフローなどの 無人 認証シナリオでは、OAuth マシン間 (M2M) 認証を使用します。 この方法では、Databricks サービスプリンシパルを使用する必要があり、GitHub などの CI/CD システムで Databricks アセット バンドルを使用する場合に最適です。

OAuth U2M 認証の場合は、次の手順を実行します。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。

    次のコマンドで、 <workspace-url> を Databricks ワークスペース インスタンスの URL に置き換えます (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com)。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。 Enterを押して、提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、Databricks CLI を使用してコマンド databricks auth profilesを実行します。 特定のプロファイルの既存の設定を表示するには、コマンド databricks auth env --profile <profile-name>を実行します。

  3. Web ブラウザーで、画面の指示に従って Databricks ワークスペースにログインします。

  4. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>

    • databricks auth token -p <profile-name>

    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ --host 値を持つプロファイルが複数ある場合は、Databricks CLI で一致する正しい OAuth トークン情報を見つけられるように、 --host オプションと -p オプションを一緒に指定する必要がある場合があります。

この構成プロファイルの名前は、バンドルを検証、展開、実行、または破棄するたびに、次の 1 つ以上の方法で使用できます。

  • コマンドライン オプション-p <profile-name>をコマンドdatabricks bundle validatedatabricks bundle deploydatabricks bundle run 、またはdatabricks bundle destroyに追加します。 「 Databricks アセット バンドルの開発ワークフロー 」を参照してください。

  • バンドル構成ファイルの最上位のworkspace マッピングのprofile マッピングの値として (ただし、Databricks では、バンドル構成ファイルの移植性を高めるため、profile マッピングではなく Databricks ワークスペースの URL に設定されたhost マッピングを使用することをお勧めします)。ワークスペースでのprofileマッピングのカバレッジを参照してください。

  • 構成プロファイルの名前が DEFAULTの場合、コマンドラインオプション -p <profile-name> または profile (または host) マッピングが指定され ていない場合 、デフォルトで使用されます。

OAuth M2M 認証の場合は、次の操作を行います。

  1. OAuth M2M 認証のセットアップ手順を完了します。 「OAuth マシン間 (M2M) 認証」を参照してください。

  2. 次のいずれかの方法で、ターゲット コンピュート リソースに Databricks CLI をインストールします。

    • コンピュート リソースに Databricks CLI をリアルタイムで手動でインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。

    • GitHub Actions を使用して GitHub 仮想マシンに Databricks CLI を自動的にインストールするには、GitHub の「 setup-cli 」を参照してください。

    • 他の CI/CD システムを使用して仮想マシンに Databricks CLI を自動的にインストールするには、CI/CD システム プロバイダーのドキュメントを参照し、「 Databricks CLI をインストールまたは更新する」を参照してください。

  3. コンピュートリソースに次の環境変数を次のように設定します。

    • DATABRICKS_HOSTで、Databricks ワークスペース インスタンスの URL (例: https://dbc-a1b2345c-d6e7.cloud.databricks.com) に設定します。

    • DATABRICKS_CLIENT_IDを Databricks サービスプリンシパルの [アプリケーション ID ] の値に設定します。

    • DATABRICKS_CLIENT_SECRETを Databricks サービスプリンシパルの OAuth シークレット 値に設定します。

    これらの環境変数を設定するには、ターゲット コンピュート リソースのオペレーティング システムまたは CI/CD システムのドキュメントを参照してください。

最初の Databricks アセット バンドルを開発する

バンドル開発を開始する最速の方法は、テンプレートを使用することです。 Databricks CLI bundle initコマンドをオプションなしで使用して、最初のバンドル プロジェクトを作成します。 これにより、Databricks が提供するデフォルトのバンドル テンプレートの選択肢が表示され、プロジェクト変数を初期化するための一連の質問が行われます。

databricks bundle init

組織は、カスタムバンドルテンプレートを作成して、独自の標準を定義することもできます。 これらの標準には、デフォルトの権限、サービスプリンシパル、カスタム CI/CD 構成が含まれる場合があります。 「Databricks アセット バンドル テンプレート」を参照してください。

プロジェクトを初期化した後、ワークスペースにデプロイする前に、 bundle validateコマンドを使用してバンドルを検証します。

databricks bundle validate

通常、IDE とDatabricks CLIバージョン 0.218.0 以上を備えたローカル開発マシンでバンドルを作成します。 これらのツールを使用すると、バンドルを作成、検証、デプロイ、実行できます。 Databricks Asset Bundles の開発ワークフローを参照してください。

Databricks Git フォルダー統合を使用してバンドルを Git に追加した後、Databricks ワークスペースでバンドルを編集できます。 ただし、ワークスペースからバンドルをテストまたはデプロイすることはできません。 代わりに、ローカル IDE をテストに使用し、CI/CD をデプロイに使用できます。

次のステップ

一般的なタスク

次の記事を使用して、Databricks アセット バンドルの一般的なタスクを完了します。

記事

この記事は、次の場合に使用します。

Databricks アセット バンドルの開発ワークフロー

databricks.yml ファイルを作成し、Databricks CLI を使用してコマンド databricks bundle validatedatabricks bundle deploydatabricks bundle runコマンドを実行することにより、バンドルを作成、検証、デプロイ、および実行するための作業時間について説明します。

アセットバンドル設定Databricks

バンドルの databricks.yml ファイルと、バンドル設定の YAML 構文に準拠するその他の関連バンドル設定ファイルを作成します。

Databricks アセットバンドルの認証

Databricks 認証用のバンドル プロジェクトを設定します。

Databricks アセット バンドルを使用して Databricks でジョブを開発する

Databricks ジョブのバンドルを作成、デプロイ、実行します。

Databricks アセット バンドルを使用して Delta Live Tables パイプラインを開発する

Delta Live Tables パイプラインのバンドルを作成、デプロイ、実行します。

MLOps スタックのDatabricksアセットバンドル

MLOps スタックのバンドルを作成、デプロイ、実行します。

Databricks アセット バンドルのライブラリの依存関係

バンドルが関連する Databricks クラスターで実行するために必要なライブラリをインストールします。

Databricks アセット バンドルのデプロイ モード

developmentproductionなどのバンドル展開モードを使用して、関連するスケジュールやトリガーの一時停止や一時停止解除などの一般的な展開動作を自動的に有効または無効にします。

アセットバンドルテンプレートDatabricks

テンプレートを使用すると、特定の種類のバンドルをより速く、より簡単に作成でき、一貫性と再現性の高い結果が得られます。

Databricks アセットバンドルのリソースに対するアクセス許可を設定する

特定のバンドルリソースのユーザー、グループ、およびサービスプリンシパルに詳細なアクセス許可レベルを適用します。

Databricks アセット バンドルで成果物設定を動的に定義する

バンドル内の成果物の特定の設定を結合またはオーバーライドします。

Databricks アセット バンドルとGitHub Actionsを使用した CI/CD ワークフローの実行

プルリクエストやマージなどの特定の GitHub ワークフローイベントに応答してバンドルをデプロイまたは実行します。

Databricks アセットバンドルのクラスター設定を上書きする

バンドル内のクラスターの特定の設定を結合またはオーバーライドします。

Databricks Asset Bundlesのジョブにタスクを追加する

バンドル内のジョブにタスクを追加します。

Databricks アセットバンドルのジョブタスク設定を上書きする

バンドル内のジョブタスクの特定の設定を結合または上書きします。

アセット バンドルを使用してPython wheel ファイルを開発するDatabricks

バンドル内のPython wheelファイルをビルド、デプロイ、呼び出します。