Databricks アセットバンドルとは何ですか?
Databricksアセットバンドルは、データおよびAIプロジェクトのソース管理、コードレビュー、テスト、継続的インテグレーションおよびデリバリー(CI/CD)など、ソフトウェアエンジニアリングのベストプラクティスの導入を促進するツールです。バンドルを使用すると、ジョブ、パイプライン、ノートブックなどの Databricks リソースをソース ファイルとして記述できます。 これらのソースファイルは、構造化、テスト、デプロイ方法など、プロジェクトのエンドツーエンドの定義を提供するため、アクティブな開発中にプロジェクトでの共同作業が容易になります。
バンドルを使用すると、プロジェクトのソースファイルとともにメタデータを含めることができます。バンドルを使用してプロジェクトをデプロイすると、このメタデータはインフラストラクチャやその他のリソースのプロビジョニングに使用されます。プロジェクトのソースファイルとメタデータのコレクションは、単一のバンドルとしてターゲット環境にデプロイされます。バンドルには以下のパーツがあります。
- 必要なクラウドインフラストラクチャおよびワークスペースの構成
- ビジネスロジックを含むノートブックやPythonファイルなどのソースファイル
- DatabricksDatabricksジョブ、DLT パイプライン、モデルサービング エンドポイント、MLflow エクスペリメント、登録モデル など、 リソースの定義と設定MLflow
- ユニットテストと統合テスト
次の図は、バンドルを使用した開発およびCI/CDパイプラインの概要を示します。
Databricks アセットバンドルはいつ使用する必要がありますか?
Databricksアセットバンドルは、Databricksプロジェクトを管理するためのInfrastructure-as-Code(IaC)アプローチです。複数のコントリビューターと自動化が不可欠であり、継続的インテグレーションとデプロイ(CI/CD)が要件である複雑なプロジェクトを管理する場合に使用します。バンドルは、ソースコードと共に作成および保守するYAMLテンプレートとファイルを使用して定義および管理されるため、IaCが適切なアプローチであるシナリオに適切にマップされます。
バンドルの理想的なシナリオには、以下のものがあります。
- チームベースの環境で、データ、アナリティクス、機械学習の各プロジェクトを構築します。バンドルを使用すると、さまざまなソースファイルを効率的に整理し管理できるようになります。これにより、コラボレーションがスムーズになり、プロセスも合理化されます。
- 機械学習の問題を迅速に反復処理します。本番運用のベストプラクティスを最初から採用している機械学習プロジェクトを使用して、機械学習のパイプラインリソース(トレーニングやバッチ推論のジョブなど)を管理します。
- デフォルトの権限、サービスプリンシパル、CI/CD構成を含むカスタムバンドルテンプレートを作成することで、新しいプロジェクト向けに組織としての基準を設定できます。
- 規制順守:規制順守に細心の注意を払う必要のある業界でも、バンドルを活用することで、コードやインフラストラクチャ作業のバージョン管理がしやすくなります。これは適切なガバナンスに役立つだけでなく、必要なコンプライアンス基準を確実に満たす上でも効果的です。
Databricks アセットバンドルはどのように機能しますか?
バンドルメタデータは、Databricksプロジェクトのアーティファクト、リソース、構成を指定するYAMLファイルを使用して定義されます。このYAMLファイルは、手動で作成することも、バンドルテンプレートを使用して生成することもできます。その後、Databricks CLIでこれらのバンドルYAMLファイルを使用してバンドルを検証、デプロイ、実行することができます。バンドルプロジェクトは、IDE、ターミナル、またはDatabricks内から直接実行することができます。この記事ではDatabricks CLIを使用します。
バンドルは手動で作成することも、テンプレートに基づいて作成することもできます。Databricks CLIはシンプルなユースケース用のデフォルトテンプレートを提供しますが、より特殊で複雑なジョブの場合は、カスタムバンドルテンプレートを作成してチームのベストプラクティスを実装し、一般的な構成の一貫性を保つことができます。
Databricks アセット バンドルの表現に使用される構成 YAML の詳細については、「 Databricks アセット バンドルの構成」を参照してください。
バンドルを使用するように環境を設定してください
Databricks CLI を使用して、コマンド ラインからバンドルをデプロイします。 Databricks CLI をインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。
Databricks アセット バンドルは、Databricks CLI バージョン 0.218.0 以降で使用できます。 インストールされている Databricks CLI のバージョンを確認するには、次のコマンドを実行します。
databricks --version
Databricks CLI をインストールした後、リモート Databricks ワークスペースが正しく構成されていることを確認します。 バンドルを使用するには、ワークスペース ファイル機能を有効にする必要があります。 Databricks Runtime バージョン 11.3 LTS 以降を使用している場合、この機能はデフォルトによって有効になります。
認証
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://dbc-a1b2345c-d6e7.cloud.databricks.com
.Bashdatabricks 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 認証の設定手順を完了します。 「を使用してDatabricks リソースへの無人アクセスをサービスプリンシパルで承認 する」を参照してください。OAuth
-
以下のいずれかの方法で、ターゲットコンピュートリソースに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://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
バンドルの作成は、 バンドルのライフサイクルの最初のステップです。 2 番目のステップはバンドルの開発であり、その重要な要素は、 databricks.yml
とリソース構成ファイルでバンドル設定とリソースを定義することです。 バンドル設定に関する情報については、「アセットバンドル設定Databricks」を参照してください。
バンドル設定例は、 GitHub のバンドル設定例 と バンドル例リポジトリにあります。
次のステップ
- ノートブックを Databricks ワークスペースにデプロイし、そのデプロイされたノートブックを Databricks ジョブとして実行するバンドルを作成します。 「Databricks アセット バンドルを使用して Databricks でジョブを開発する」を参照してください。
- ノートブックを Databricks ワークスペースにデプロイし、デプロイされたノートブックを DLT パイプラインとして実行するバンドルを作成します。「Databricks アセット バンドルを使用した DLT パイプラインの開発」を参照してください。
- MLOps スタックをデプロイして実行するバンドルを作成します。 「MLOps スタックの Databricks アセット バンドル」を参照してください。
- GitHub の CI/CD (継続的インテグレーション/継続的デプロイ) ワークフローにバンドルを追加します。 「Databricks アセット バンドルと GitHub Actions を使用して CI/CD ワークフローを実行する」を参照してください。
- Python wheel ファイルをビルド、デプロイ、および呼び出すバンドルを作成します。 「アセットバンドルを使用した ファイルの開発」を参照してください 。Python wheelDatabricks
- 自分や他のユーザーがバンドルを作成するために使用できるカスタムテンプレートを作成します。 カスタム テンプレートには、デフォルト アクセス許可、サービスプリンシパル、およびカスタム CI/CD 構成が含まれる場合があります。 「Databricks Asset Bundle プロジェクト テンプレート」を参照してください。
- dbx から Databricks Asset Bundle に移行します。 dbx からバンドルへの移行を参照してください。
- Databricks Asset Bundle でリリースされた最新の主要な新機能をご覧ください。 「 Databricks Asset Bundles feature リリースノート」を参照してください。