Databricks アセットバンドルを使用した Delta Live Tables パイプラインの開発
Databricks アセット バンドル (単に バンドルとも呼ばれます) を使用すると、Delta Live Tables パイプラインなどの Databricks リソースをプログラムで検証、デプロイ、実行できます。 「Databricks アセットバンドルとは」を参照してください。
この記事では、パイプラインをプログラムで管理するためのバンドルを作成する方法について説明します。 「Delta Live Tables とは」を参照してください。バンドルは、 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 でコードを記述するときに構文チェック、オートコンプリート、データ型チェックを提供することで、Delta Live Tables パイプライン コードのローカル開発を支援する Python モジュールが用意されています。
ローカル開発用の Python モジュールは PyPi で利用できます。 モジュールをインストールするには、「 Delta Live Tables の Python スタブ」を参照してください。
プロジェクト テンプレートを使用したバンドルの作成
の Databricksデフォルト バンドル テンプレートを使用してバンドルを作成します。Pythonこのテンプレートは、元のデータセットからデータをフィルター処理する Delta Live Tables パイプラインを定義するノートブックで構成されています。 バンドルテンプレートの詳細については、「アセットバンドルプロジェクトテンプレートDatabricks」を参照してください。
バンドルを最初から作成する場合は、「 バンドルを手動で作成する」を参照してください。
ステップ 1: 認証を設定する
この手順では、開発マシン上の Databricks CLI と Databricks ワークスペースとの間の認証を設定します。 この記事では、 OAuth ユーザー対マシン (U2M) 認証と、認証に DEFAULT
という名前の対応する Databricks 構成プロファイルを使用することを前提としています。
注:
U2M認証は、これらのステップをリアルタイムで試すのに適しています。 完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」のM2M認証の設定手順を参照してください。
Databricks CLIを使用して、ターゲットワークスペースごとに以下のコマンドを実行し、ローカルでOAuthトークン管理を開始します。
次のコマンドで、
<workspace-url>
をDatabricksワークスペースインスタンスのURLに置き換えます(例:https://dbc-a1b2345c-d6e7.cloud.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
オプションを一緒に指定する必要がある場合があります。
ステップ 2: バンドルを作成する
デフォルトの Python バンドルプロジェクトテンプレートを使用してバンドルを初期化します。
ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成バンドルを格納するローカル開発マシン上のディレクトリに切り替えます。
Databricks CLI を使用して、
bundle init
コマンドを実行します。databricks 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 は、このオプションに関連付けられているサンプル ノートブックには Delta Live Tables コードが含まれていないため、この時点でサンプル ノートブックを追加しないように指示します。Include a stub (sample) DLT pipeline
の場合は、Enter
を押してデフォルト値のyes
のままにします。これにより、Databricks CLI は、Delta Live Tables コードを含むサンプル ノートブックを追加するように指示されます。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
コマンドを実行します。databricks bundle validate
バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。
この手順の後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドル構成がまだ有効かどうかを確認する必要があります。
ステップ 5: ローカル プロジェクトをリモート ワークスペースに配置する
この手順では、ローカル ノートブックをリモート Databricks ワークスペースにデプロイし、ワークスペース内に Delta Live Tables パイプラインを作成します。
バンドル ルートから、Databricks CLI を使用して、次のように
bundle deploy
コマンドを実行します。databricks bundle deploy -t dev
ローカルノートブックがデプロイされたかどうかを確認する: Databricks ワークスペースのサイドバーで、[ ワークスペース]をクリックします。
src フォルダ> dev > ファイル>
<project-name>
> users ><your-username>
> .bundle をクリックします。ノートブックはこのフォルダにある必要があります。パイプラインが作成されたかどうかを確認する: Databricks ワークスペースのサイドバーで、 [Delta Live Tables] をクリックします。
Delta Live Tables タブで、[dev
<your-username>
]<project-name>
パイプラインをクリックします。
この手順の後にバンドルに変更を加えた場合は、ステップ 4 から 5 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。
ステップ 6: デプロイしたプロジェクトを実行する
この手順では、コマンド ラインからワークスペース内の Delta Live Tables パイプラインの実行をトリガーします。
ルートディレクトリから、次のように Databricks CLI を使用して
bundle run
コマンドを実行します。<project-name>
をステップ 2 のプロジェクトの名前に置き換えます。databricks bundle run -t dev <project-name>_pipeline
ターミナルに表示される
Update URL
の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。Databricks ワークスペースで、パイプラインが正常に完了したら、 taxi_raw ビューと filtered_taxis マテリアライズドビューをクリックして詳細を表示します。
この手順の後にバンドルに変更を加えた場合は、ステップ 4 から 6 を繰り返して、バンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行してください。
ステップ 7: クリーンアップ
この手順では、デプロイされたノートブックとパイプラインをワークスペースから削除します。
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle destroy
コマンドを実行します。databricks bundle destroy -t dev
パイプラインの削除要求を確認する: リソースを完全に破棄するように求められたら、「
y
」と入力してEnter
キーを押します。ノートブックの削除要求を確認する: 以前にデプロイしたフォルダーとそのすべてのファイルを完全に破棄するように求められたら、「
y
」と入力してEnter
キーを押します。開発マシンからバンドルも削除する場合は、ステップ 2 からローカル ディレクトリを削除できます。
既存のパイプライン定義をバンドルに追加する
既存の Delta Live Tables パイプライン定義をベースとして使用して、バンドル構成ファイルで新しいパイプラインを定義できます。 既存のパイプライン定義を取得するには、UI を使用して手動で取得するか、Databricks CLI を使用してプログラムで生成します。
UI を使用して既存のパイプライン定義を取得する
Databricks ワークスペース UI から既存のパイプライン定義の YAML 表現を取得するには、次のようにします。
Databricks ワークスペースのサイドバーで、 [ワークフロー] をクリックします。
[Delta Live Tables] タブで、パイプラインの [Name] リンクをクリックします。
[開発] ボタンの横にあるケバブをクリックし、[設定 YAML の表示] をクリックします。
[パイプライン設定 YAML] ダイアログで、コピー アイコンをクリックして、パイプライン定義の YAML をローカル クリップボードにコピーします。
コピーした YAML をバンドルの
databricks.yml
ファイルに追加するか、バンドル プロジェクトのresources
フォルダーにパイプラインの構成ファイルを作成し、databricks.yml
ファイルから参照します。 「リソース」を参照してください。バンドルのプロジェクトソースを参照するPythonファイルおよびノートブックをダウンロードして追加します。 通常、バンドル成果物はバンドル内の
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 を設定します。databricks bundle generate pipeline --existing-pipeline-id 6565621249
このコマンドは、バンドルの [
resources
] フォルダにパイプラインのバンドル設定ファイルを作成し、参照されているアーティファクトをsrc
フォルダにダウンロードします。ヒント
最初に
bundle deployment bind
を使用してバンドル内のリソースをワークスペース内のリソースにバインドすると、ワークスペース内のリソースは、バインド先のバンドルで定義された設定に基づいて更新されます。次のbundle deploy
以降。bundle deployment bind
に関する情報については、「Bind bundle リソース」を参照してください。