Databricks Asset Bundles を使用した DLT パイプラインの開発
Databricks アセットバンドル (単に バンドル とも呼ばれます) を使用すると、DLT パイプラインなどの Databricks リソースをプログラムで検証、デプロイ、実行できます。「Databricks アセットバンドルとは」を参照してください。
この記事では、パイプラインをプログラムで管理するためのバンドルを作成する方法について説明します。DLTとはを参照してください。バンドルは、 Databricks Asset Bundles デフォルト バンドル テンプレート for the Pythonを使用して作成されます。このテンプレートは、ノートブックと、それを実行するパイプラインおよびジョブの定義とペアで構成されます。 次に、デプロイされたパイプラインを Databricks ワークスペースで検証、デプロイ、実行します。
Databricks ユーザー インターフェイスまたは API を使用して作成された既存のパイプラインをバンドルに移動する場合は、バンドルの構成ファイルで定義する必要があります。 Databricks では、まず次の手順を使用してバンドルを作成し、次にバンドルが機能するかどうかを検証することをお勧めします。 その後、追加の定義、ノートブック、およびその他のソースをバンドルに追加できます。 「 既存のパイプライン定義をバンドルに追加する」を参照してください。
必要条件
- Databricks CLI バージョン 0.218.0 以降。 インストールされている Databricks CLI のバージョンを確認するには、コマンド
databricks -v
を実行します。 Databricks CLI をインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。 - リモートワークスペースでは、ワークスペースファイルが有効になっている必要があります。 「ワークスペースファイルとは」を参照してください。
(オプション)Python モジュールをインストールして、ローカル パイプライン開発をサポートします
Databricks には、IDE でコードを記述するときに構文チェック、オートコンプリート、データ型チェックを提供することで、DLT パイプライン コードのローカル開発を支援する Python モジュールが用意されています。
ローカル開発用の Python モジュールは PyPi で利用できます。モジュールをインストールするには、 DLT の Python スタブを参照してください。
プロジェクト テンプレートを使用したバンドルの作成
の Databricksデフォルト バンドル テンプレートを使用してバンドルを作成します。Pythonこのテンプレートは、DLT パイプラインを定義するノートブックで構成され、元のデータセットからデータをフィルター処理します。バンドルテンプレートの詳細については、「アセットバンドルプロジェクトテンプレートDatabricks」を参照してください。
バンドルを最初から作成する場合は、「 バンドルを手動で作成する」を参照してください。
ステップ 1: 認証を設定する
この手順では、開発用マシン上の Databricks CLI と Databricks ワークスペースの間の認証を設定します。 この記事では、OAuth ユーザーマシン (U2M) 認証と、認証に DEFAULT
という名前の対応する Databricks 構成プロファイルを使用することを前提としています。
U2M認証は、これらの手順をリアルタイムで試すのに適しています。 完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」の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 stub (sample) notebook
の場合は、[no
] を選択し、Enter
キーを押します。これにより、Databricks CLI は、このオプションに関連付けられているサンプル ノートブックには DLT コードが含まれていないため、この時点でサンプル ノートブックを追加しないように指示します。 -
Include a stub (sample) DLT pipeline
の場合は、Enter
を押してデフォルト値のyes
のままにします。これにより、DLT コードを含むサンプル ノートブックを Databricks CLI に追加するように指示されます。 -
Include a stub (sample) Python package
の場合は、[no
] を選択し、Enter
キーを押します。これにより、 Databricks CLI は、サンプル Python wheel パッケージファイルや関連するビルド手順をバンドルに追加しないように指示されます。
ステップ 3: バンドルを探索する
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルートディレクトリに切り替えます。 特に関心のあるファイルには、次のものがあります。
databricks.yml
: このファイルは、バンドルのプログラム名を指定し、パイプライン定義への参照を含め、ターゲット ワークスペースに関する設定を指定します。resources/<project-name>_job.yml
andresources/<project-name>_pipeline.yml
:これらのファイルは、パイプライン更新タスクを含むジョブとパイプラインの設定を定義します。src/dlt_pipeline.ipynb
: このファイルは、実行するとパイプラインを実行するノートブックです。
パイプラインをカスタマイズする場合、パイプライン宣言内のマッピングは、リファレンスの POST /api/2.0/パイプライン RESTAPIで定義されている create パイプライン操作のリクエストペイロードに対応し、YAML 形式で表されます。
ステップ 4: プロジェクトのバンドル設定ファイルを検証する
この手順では、バンドル構成が有効かどうかを確認します。
-
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle validate
コマンドを実行します。Bashdatabricks bundle validate
-
バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。
このステップの後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドルの設定がまだ有効かどうかを確認してください。
手順 5: ローカル プロジェクトをリモート ワークスペースにデプロイする
この手順では、ローカル ノートブックをリモート Databricks ワークスペースにデプロイし、ワークスペース内に DLT パイプラインを作成します。
-
バンドル ルートから、Databricks CLI を使用して、次のように
bundle deploy
コマンドを実行します。Bashdatabricks bundle deploy -t dev
-
ローカルノートブックがデプロイされたかどうかを確認する: Databricks ワークスペースのサイドバーで、[ ワークスペース ]をクリックします。
-
src フォルダ> dev > ファイル>
<project-name>
> users ><your-username>
> .bundle をクリックします。ノートブックはこのフォルダにある必要があります。 -
パイプラインが作成されたかどうかを確認する: Databricks ワークスペースのサイドバーで、 [DLT ] をクリックします。
-
DLT タブで、[ 開発
<your-username>
]<project-name>
パイプライン をクリックします。
この手順の後にバンドルに変更を加えた場合は、手順 4 から 5 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。
ステップ 6: デプロイされたプロジェクトを実行する
この手順では、コマンド ラインからワークスペース内の DLT パイプラインの実行をトリガーします。
-
ルート ディレクトリから、Databricks CLI を使用して次のように
bundle run
コマンドを実行します。<project-name>
を手順 2 のプロジェクトの名前に置き換えます。Bashdatabricks bundle run -t dev <project-name>_pipeline
-
ターミナルに表示される
Update URL
の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。 -
Databricks ワークスペースで、パイプラインが正常に完了したら、 taxi_raw ビューと filtered_taxis マテリアライズドビューをクリックして詳細を表示します。
この手順の後にバンドルに変更を加えた場合は、手順 4 から 6 を繰り返して、バンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行する必要があります。
ステップ 7: クリーンアップ
この手順では、デプロイされたノートブックとパイプラインをワークスペースから削除します。
-
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle destroy
コマンドを実行します。Bashdatabricks bundle destroy -t dev
-
パイプラインの削除要求を確認する: リソースを完全に破棄するように求められたら、「
y
」と入力してEnter
キーを押します。 -
ノートブックの削除要求を確認する: 以前にデプロイしたフォルダーとそのすべてのファイルを完全に破棄するように求められたら、「
y
」と入力してEnter
キーを押します。 -
開発マシンからバンドルも削除する場合は、ステップ 2 からローカル ディレクトリを削除できます。
既存のパイプライン定義をバンドルに追加する
既存の DLT パイプライン定義をベースとして使用して、バンドル設定ファイルで新しいパイプラインを定義できます。既存のパイプライン定義を取得するには、UI を使用して手動で取得するか、Databricks CLI を使用してプログラムで生成します。
UI を使用して既存のパイプライン定義を取得する
Databricks ワークスペース UI から既存のパイプライン定義の YAML 表現を取得するには、次のようにします。
-
Databricks ワークスペースのサイドバーで、 [ワークフロー] をクリックします。
-
[DLT ] タブで、パイプラインの [Name ] リンクをクリックします。
-
「 開発 」ボタンの横にあるケバブをクリックし、「 設定YAMLを表示 」をクリックします。
-
[パイプライン設定 YAML ] ダイアログで、コピー アイコンをクリックして、パイプライン定義の YAML をローカル クリップボードにコピーします。
-
コピーした YAML をバンドルの
databricks.yml
ファイルに追加するか、バンドル プロジェクトのresources
フォルダーにパイプラインの構成ファイルを作成し、databricks.yml
ファイルから参照します。 「リソース」を参照してください。 -
バンドルのプロジェクトソースを参照するPythonファイルおよびノートブックをダウンロードして追加します。 通常、bundle アーティファクトはバンドル内の
src
ディレクトリにあります。
ワークスペースから既存のノートブックを 形式にエクスポートするには、Databricks .ipynb
ノートブック ユーザー インターフェイスから[ファイル] > [IPython ノートブック>エクスポート] Databricksをクリックします。
ノートブック、Python ファイル、その他のアーティファクトをバンドルに追加したら、パイプライン定義がそれらを適切に参照していることを確認します。 たとえば、バンドルの src/
ディレクトリにある hello.ipynb
という名前のノートブックの場合、次のようになります。
resources:
pipelines:
hello-pipeline:
name: hello-pipeline
libraries:
- notebook:
path: ../src/hello.ipynb
Databricks CLI を使用して既存のパイプライン定義を生成する
既存のパイプラインのバンドル設定をプログラムで生成するには:
-
UI のパイプライン の詳細 サイドパネルから既存のパイプラインの ID を取得するか、 Databricks CLI
databricks pipelines list-pipelines
コマンドを使用します。 -
bundle generate pipeline
Databricks CLI コマンドを実行し、パイプライン ID を設定します。Bashdatabricks bundle generate pipeline --existing-pipeline-id 6565621249
このコマンドは、バンドルの [
resources
] フォルダにパイプラインのバンドル設定ファイルを作成し、参照されているアーティファクトをsrc
フォルダにダウンロードします。
最初に bundle deployment bind
を使用してバンドル内のリソースをワークスペース内のリソースにバインドすると、ワークスペース内のリソースは、バインド先のバンドルで定義された設定に基づいて更新されます。次の bundle deploy
以降。 bundle deployment bind
に関する情報については、「Bind bundle リソース」を参照してください。