Databricksアセット バンドルを使用してLakeflow Spark宣言型パイプラインを開発する
Databricksアセット バンドル (単に バンドル とも呼ばれます) を使用すると、 Lakeflow Spark宣言型パイプラインなどのDatabricksリソースをプログラムで検証、デプロイ、実行できます。 「Databricks アセット バンドルとは何ですか?」を参照してください。
このページでは、パイプラインをプログラムで管理するためのバンドルを作成する方法について説明します。LakeFlow Spark宣言型パイプラインを参照してください。 バンドルは、ETL パイプラインとそれを実行するジョブを定義する、 Python 用の Databricks Asset Bundles のデフォルト バンドル テンプレートを使用して作成されます。次に、デプロイされたパイプラインを Databricks ワークスペースで検証、デプロイ、実行します。
Databricks ユーザー インターフェイスまたは API を使用して作成された既存のパイプラインをバンドルに移動する場合には、それらをバンドルの構成ファイルで定義する必要があります。Databricks 、まず以下のステップを使用してバンドルを作成し、次に構成とその他のソースをバンドルに追加することをお勧めします。 「UI を使用して既存のパイプライン定義を取得する」を参照してください。
必要条件
- Databricks CLI バージョン 0.276.0 以上。インストールされている Databricks CLI のバージョンを確認するには、コマンド
databricks -vを実行します。Databricks CLI をインストールするには、 「Databricks CLI のインストールまたは更新」を参照してください。 - テストを実行し、IDE からこのプロジェクトの依存関係をインストールするには、 uvが必要です。
- リモートワークスペースでは、ワークスペースファイルが有効になっている必要があります。 「ワークスペースファイルとは」を参照してください。
- パイプライン内のテーブルの既存のカタログ。「カタログの作成」を参照してください。
(オプション)Python モジュールをインストールして、ローカル パイプライン開発をサポートします
Databricks IDE でコードを記述するときに構文チェック、オートコンプリート、およびデータ型チェックを提供することで、 Lakeflow Spark宣言型パイプライン コードのローカル開発を支援するPythonモジュールを提供します。
ローカル開発用の Python モジュールは PyPi で利用できます。モジュールをインストールするには、 DLT の Python スタブを参照してください。
ステップ 1: 認証を設定する
まず、開発マシン上の Databricks CLI と Databricks ワークスペース間の認証を設定します。このページでは、認証に OAuth ユーザー対マシン (U2M) 認証と、 DEFAULTという名前の対応する Databricks 構成プロファイルを使用することを前提としています。
U2M 認証は、これらの手順をリアルタイムで試すのに適しています。完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。サービスプリンシパルアクセスをOAuthでDatabricksに許可するのM2M認証の設定手順を参照してください。
-
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。
次のコマンドで、
<workspace-url>を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://1234567890123456.7.gcp.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オプションを一緒に指定する必要がある場合があります。
ステップ 2: バンドルを作成する
デフォルトの Python バンドルプロジェクトテンプレートを使用してバンドルを初期化します。
-
ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成バンドルを格納するローカル開発マシン上のディレクトリに切り替えます。
-
Databricks CLI を使用して、
bundle initコマンドを実行します。Bashdatabricks bundle init -
Template to useの場合は、Enterを押してデフォルト値のdefault-pythonのままにします。 -
[
Unique name for this project] では、デフォルト値のmy_projectをそのまま使用するか、別の値を入力してEnterキーを押します。 これにより、このバンドルのルートディレクトリの名前が決まります。 このルートディレクトリは、現在の作業ディレクトリ内に作成されます。 -
Include a job that runs a notebookの場合は、noを選択してEnterを押します。(このオプションに関連付けられているサンプル ノートブックには、パイプライン コードは含まれていません。) -
Include an ETL pipelineの場合は、Enterを押してデフォルト値のyesのままにします。これにより、サンプル パイプライン コードとパイプライン定義が追加されます。 -
Include a stub (sample) Python packageの場合は、noを選択してEnterを押します。 -
Use serverlessの場合は、[yes] を選択し、Enterキーを押します。これにより、バンドルをサーバレス コンピュートで実行するように Databricks CLI に指示します。 -
Default catalog for any tables created by this project [hive_metastore]には、既存の Unity Catalog カタログの名前を入力します。 -
Use a personal schema for each user working on this project.の場合はyesを選択します。
ステップ 3: バンドルを探索する
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルートディレクトリに切り替えます。 特に関心のあるファイルには、次のものがあります。
databricks.yml: このファイルは、バンドルのプログラム名を指定し、バンドルのファイルへの参照を含め、カタログとスキーマの変数を定義し、ターゲット ワークスペースの設定を指定します。resources/sample_job.ymlおよびresources/<project-name>_etl_pipeline.yml: これらのファイルは、パイプライン更新タスクを含むジョブとパイプラインの設定を定義します。パイプラインの設定については、 「パイプライン」を参照してください。src/: このフォルダーには、サンプル パイプラインのソース ファイル、探索、および変換が含まれています。tests/およびfixtures/: これらのフォルダーには、パイプラインのサンプル単体テストとデータ セットのフィクスチャが含まれています。README.md: このファイルには、このバンドル テンプレートの使用および開始方法に関する追加情報が含まれています。
ステップ 4: バンドル構成を検証する
次に、バンドル構成が有効かどうかを確認します。
-
ルート ディレクトリから、Databricks CLI を使用して
bundle validateコマンドを実行します。Bashdatabricks bundle validate -
バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。
ステップ 5: バンドルをリモートのワークスペースにデプロイします
次に、バンドルをリモート Databricks ワークスペースにデプロイし、ワークスペース内のパイプラインを検証します。
-
バンドル ルートから、Databricks CLI を使用して
bundle deployコマンドを実行します。Bashdatabricks bundle deploy --target dev
大丈夫テンプレートにはパイプラインを毎日実行するジョブが含まれていますが、これはターゲットdevデプロイメント モードでは停止します。 「Databricks Asset Bundle の展開モード」を参照してください。
-
バンドルがデプロイされたことを確認します。
- Databricksワークスペースのサイドバーで、 [ワークスペース] をクリックします。
- ユーザー >
<your-username>>.bundleフォルダーをクリックして、バンドル プロジェクトを見つけます。
-
パイプラインが作成されたかどうかを確認します。
- Databricks ワークスペースのサイドバーで、 ジョブとパイプライン をクリックします。
- 必要に応じて、 パイプライン フィルターと 自分が所有 フィルターを選択します。
- [dev
<your-username>]<project-name>_etl をクリックします。
この手順の後にバンドルに変更を加えた場合は、手順 4 から 5 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。
ステップ 6: デプロイされたパイプラインを実行する
次に、コマンド ラインからワークスペースでパイプラインの実行をトリガーします。
-
ルート ディレクトリから、Databricks CLI を使用して
bundle runコマンドを実行し、<project-name>プロジェクトの名前に置き換えます。Bashdatabricks bundle run --target dev <project-name>_etl -
ターミナルに表示される
Update URLの値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。 -
Databricksワークスペースで、パイプライン実行が正常に完了したら、マテリアライズドビューをクリックして各ビューの詳細を確認します。
この手順の後にバンドルに変更を加えた場合は、手順 4 から 6 を繰り返して、バンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行する必要があります。
ステップ 7: 実行テスト
最後に、 pytestを使用してローカルでテストを実行します。
uv run pytest
ステップ8: クリーンアップ
このステップでは、デプロイされたバンドルとパイプラインをワークスペースから削除します。
-
ルート ディレクトリから、Databricks CLI を使用して
bundle destroyコマンドを実行します。Bashdatabricks bundle destroy --target dev -
リソース、パイプライン、およびパイプラインによって管理されるテーブルとビューを完全に破棄するように求めるメッセージが表示されたら、
yと入力してEnterを押します。 -
開発マシンからもバンドルを削除する場合は、ローカル プロジェクト ディレクトリを削除できます。