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 認証の場合は、次の手順を実行します。
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。
次のコマンドで、
<workspace-url>
を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://1234567890123456.7.gcp.databricks.com
)。databricks auth login --host <workspace-url>
Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。
Enter
を押して、提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、Databricks CLI を使用してコマンド
databricks auth profiles
を実行します。 特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>
を実行します。Web ブラウザーで、画面の指示に従って Databricks ワークスペースにログインします。
プロファイルの現在の 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 validate
、databricks bundle deploy
、databricks bundle run
、またはdatabricks bundle destroy
に追加します。 「 Databricks アセット バンドルの開発ワークフロー 」を参照してください。バンドル構成ファイルの最上位の
workspace
マッピングのprofile
マッピングの値として (ただし、Databricks では、バンドル構成ファイルの移植性を高めるため、profile
マッピングではなく Databricks ワークスペースの URL に設定されたhost
マッピングを使用することをお勧めします)。ワークスペースでのprofile
マッピングのカバレッジを参照してください。構成プロファイルの名前が
DEFAULT
の場合、コマンドラインオプション-p <profile-name>
またはprofile
(またはhost
) マッピングが指定され ていない場合 、デフォルトで使用されます。
OAuth M2M 認証の場合は、次の操作を行います。
OAuth M2M 認証のセットアップ手順を完了します。 「OAuth マシン間 (M2M) 認証」を参照してください。
次のいずれかの方法で、ターゲット コンピュート リソースに Databricks CLI をインストールします。
コンピュート リソースに Databricks CLI をリアルタイムで手動でインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。
GitHub Actions を使用して GitHub 仮想マシンに Databricks CLI を自動的にインストールするには、GitHub の「 setup-cli 」を参照してください。
他の CI/CD システムを使用して仮想マシンに Databricks CLI を自動的にインストールするには、CI/CD システム プロバイダーのドキュメントを参照し、「 Databricks CLI をインストールまたは更新する」を参照してください。
コンピュートリソースに次の環境変数を次のように設定します。
DATABRICKS_HOST
で、Databricks ワークスペース インスタンスの URL (例:https://1234567890123456.7.gcp.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 アセット バンドルを使用して Databricks でジョブを開発する」を参照してください。
ノートブックを Databricks ワークスペースにデプロイし、そのデプロイされたノートブックを Delta Live Tables パイプラインとして実行するバンドルを作成します。 「Databricks Asset Bundles を使用して Delta Live Tables パイプラインを開発する」を参照してください。
MLOps スタックをデプロイして実行するバンドルを作成します。 「MLOps スタックの Databricks アセットバンドル」を参照してください。
GitHub の CI/CD (継続的インテグレーション/継続的デプロイ) ワークフローにバンドルを追加します。 「Databricks アセットバンドルとGitHub Actionsを使用した CI/CD ワークフローの実行」を参照してください。
Python wheelファイルをビルド、デプロイ、および呼び出すバンドルを作成します。 アセット バンドルを使用した Python wheelファイルの開発」Databricks を参照してください。
自分や他のユーザーがバンドルの作成に使用できるカスタムテンプレートを作成します。 「Databricks アセット バンドル テンプレート」を参照してください。
一般的なタスク
次の記事を使用して、Databricks アセット バンドルの一般的なタスクを完了します。
記事 |
この記事は、次の場合に使用します。 |
---|---|
|
|
バンドルの |
|
Databricks 認証用のバンドル プロジェクトを設定します。 |
|
Databricks ジョブのバンドルを作成、デプロイ、実行します。 |
|
Delta Live Tables パイプラインのバンドルを作成、デプロイ、実行します。 |
|
MLOps スタックのバンドルを作成、デプロイ、実行します。 |
|
バンドルが関連する Databricks クラスターで実行するために必要なライブラリをインストールします。 |
|
|
|
テンプレートを使用すると、特定の種類のバンドルをより速く、より簡単に作成でき、一貫性と再現性の高い結果が得られます。 |
|
特定のバンドルリソースのユーザー、グループ、およびサービスプリンシパルに詳細なアクセス許可レベルを適用します。 |
|
バンドル内の成果物の特定の設定を結合またはオーバーライドします。 |
|
プルリクエストやマージなどの特定の GitHub ワークフローイベントに応答してバンドルをデプロイまたは実行します。 |
|
バンドル内のクラスターの特定の設定を結合またはオーバーライドします。 |
|
バンドル内のジョブにタスクを追加します。 |
|
バンドル内のジョブタスクの特定の設定を結合または上書きします。 |
|
バンドル内のPython wheelファイルをビルド、デプロイ、呼び出します。 |