次の方法で共有


Databricks アセット バンドルを使用して Lakeflow 宣言パイプラインを開発する

Databricks アセット バンドル (単に バンドルとも呼ばれます) を使用すると、Lakeflow 宣言パイプラインなどの Azure Databricks リソースをプログラムで検証、デプロイ、実行できます。 Databricks アセット バンドルとはを参照してください。

この記事では、バンドルを作成してパイプラインをプログラムで管理する方法について説明します。 「Lakeflow 宣言型パイプライン」を参照してください。 バンドルは、Python 用の Databricks アセット バンドルのデフォルト バンドル テンプレートを使用して作成されます。これは、ノートブックと、それを実行するパイプラインおよびジョブの定義の組み合わせで構成されます。 次に、Azure Databricks ワークスペースで、デプロイされたパイプラインを検証、デプロイ、実行します。

ヒント

バンドルに移動する Azure Databricks ユーザー インターフェイスまたは API を使用して作成された既存のパイプラインがある場合は、それらをバンドルの構成ファイルで定義する必要があります。 Databricks では、まず以下の手順に従ってバンドルを作成し、バンドルが機能するかどうかを検証することが推奨されます。 その後、さらに定義、ノートブック、その他のソースをバンドルに追加できます。 UI を使用した既存のパイプライン定義の取得を参照してください。

要件

(省略可能) ローカルのパイプライン開発をサポートする Python モジュールをインストールする

Databricks には、IDE でコードを記述するときに構文チェック、オートコンプリート、およびデータ型チェックを提供することで、Lakeflow 宣言型パイプライン コードのローカル開発を支援する Python モジュールが用意されています。

ローカル開発用の Python モジュールは PyPi で入手できます。 モジュールをインストールするには、 Lakeflow 宣言パイプラインの Python スタブを参照してください。

プロジェクト テンプレートを使用してバンドルを作成する

Python 用の Azure Databricks のデフォルト バンドル テンプレートを使用してバンドルを作成します。 このテンプレートは、元のデータセットのデータをフィルター処理する ETL パイプライン (Lakeflow 宣言パイプラインを使用) を定義するノートブックで構成されます。 バンドル テンプレートの詳細については、「 Databricks Asset Bundle プロジェクト テンプレート」を参照してください。

バンドルをゼロから作成する場合は、「バンドルを 手動で作成する」を参照してください。

手順 1: 認証を設定する

この手順では、お使いの開発マシン上の Databricks CLI とお使いの Azure Databricks ワークスペース間の認証を設定します。 この記事では、OAuth ユーザー対マシン (U2M) 認証と、DEFAULT という名前の対応する Azure Databricks 構成プロファイルを認証に使用することを前提としています。

メモ

U2M 認証は、これらの手順をリアルタイムで試す場合に適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「OAuth を使用してサービス プリンシパルを使用して Azure Databricks リソースへの無人アクセスを承認する」の M2M 認証のセットアップ手順を参照してください。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。

    次のコマンドでは、 <workspace-url> をワークスペースごとの Azure Databricks URL に置き換えます (例: https://adb-1234567890123456.7.azuredatabricks.net)。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI では、入力した情報を Azure Databricks 構成プロファイルとして保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプト内で、Databricks CLI を使用してコマンド databricks auth profiles を実行します。 特定のプロファイルの既存の設定を表示するには、コマンド databricks auth env --profile <profile-name>を実行します。

  3. Web ブラウザー内で、画面の指示に従って Azure Databricks ワークスペースにログインします。

  4. プロファイルの現在の 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 バンドル プロジェクト テンプレートを使用してバンドルを初期化します。

  1. ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成されたバンドルを含むローカル開発マシン上のディレクトリに切り替えます。

  2. Databricks CLI を使用して、次のように bundle init コマンドを実行します:

    databricks bundle init
    
  3. Template to usedefault-python キーを押して Enter の既定値のままにします。

  4. Unique name for this projectmy_project の既定値のままにするか、別の値を入力して Enter キーを押します。 これにより、このバンドルのルート ディレクトリの名前が決まります。 このルート ディレクトリは、現在の作業ディレクトリ内に作成されます。

  5. Include a stub (sample) notebook の場合は、no を選択し、Enter を押します。 このオプションに関連付けられているサンプル ノートブックには Lakeflow 宣言パイプライン コードがないため、この時点でサンプル ノートブックを追加しないように Databricks CLI に指示します。

  6. Include a stub (sample) Delta Live Tables pipelineyes キーを押して Enter の既定値のままにします。 これにより、Databricks CLI に、Lakeflow 宣言パイプライン コードが含まれるサンプル ノートブックを追加するように指示します。

  7. Include a stub (sample) Python package の場合は、no を選択し、Enter を押します。 これにより、サンプル Python ホイール パッケージ ファイルまたは関連するビルド手順をバンドルに追加しないことを Databricks CLI に指示します。

手順 3: バンドルを調べる

テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替えます。 特に重要なファイルは次のとおりです。

  • databricks.yml: このファイルは、バンドルのプログラム名を指定し、パイプライン定義への参照を含み、ターゲット ワークスペースに関する設定を指定します。
  • resources/<project-name>_job.yml resources/<project-name>_pipeline.yml: これらのファイルは、パイプライン更新タスクを含むジョブとパイプラインの設定を定義します。
  • src/dlt_pipeline.ipynb: このファイルは、実行時にパイプラインを実行するノートブックです。

パイプラインをカスタマイズする場合、パイプライン宣言内のマッピングは、REST API リファレンスの POST /api/2.0/pipelines で定義されているパイプライン作成操作の要求ペイロードに対応し、YAML 形式で表されます。

手順 4: プロジェクトのバンドル構成ファイルを検証する

この手順では、そのバンドル設定が有効かどうかを確認します。

  1. ルート ディレクトリから、次のように Databricks CLI を使って bundle validate コマンドを実行します。

    databricks bundle validate
    
  2. バンドル構成の概要が返されたら、検証が成功したことになります。 エラーが返される場合は、エラーを修正してから、この手順を繰り返します。

この手順の後、お使いのバンドルに何か変更を加える場合はこの手順を繰り返し、お使いのバンドル構成がまだ有効かどうかをチェックする必要があります。

手順 5: ローカル プロジェクトをリモート ワークスペースにデプロイする

この手順では、ローカル ノートブックをリモートの Azure Databricks ワークスペースにデプロイし、ワークスペース内にパイプラインを作成します。

  1. バンドルのルートから、次のように Databricks CLI を使って bundle deploy コマンドを実行します。

    databricks bundle deploy -t dev
    
  2. ローカル ノートブックがデプロイされたかどうかを確認します。Azure Databricks ワークスペースのサイドバーで、[ ワークスペース] をクリックします。

  3. [Users] ><your-username>> [.bundle] ><project-name>> [dev] > [files] > [src] フォルダーをクリックします。 そのノートブックはこのフォルダー内に存在する必要があります。

  4. パイプラインが作成されたかどうかを確認します。

    1. Azure Databricks ワークスペースのサイドバーで、ジョブ & パイプライン をクリックします。
    2. 必要に応じて、[ Pipelines and Owned by me ] フィルターを選択します。
    3. [開発<your-username>] <project-name>_pipelineをクリックします。

この手順の後にバンドルに変更を加えた場合は、手順 4 と 5 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。

手順 6: デプロイされたプロジェクトを実行する

この手順では、コマンド ラインからワークスペース内のパイプラインの実行をトリガーします。

  1. ルート ディレクトリから、Databricks CLI を使って、bundle run コマンドを次のように実行します。<project-name> は手順 2 のプロジェクトの名前に置き換えます。

    databricks bundle run -t dev <project-name>_pipeline
    
  2. お使いのターミナル内に表示される "Update URL" の値をコピーし、この値を Web ブラウザーに貼り付けて、お使いの Azure Databricks ワークスペースを開きます。

  3. Azure Databricks ワークスペースで、パイプラインが正常に完了したら、 taxi_raw ビューと filtered_taxis 具体化されたビューをクリックして詳細を表示します。

この手順の後にバンドルに変更を加えた場合は、手順 4 から 6 を繰り返して、バンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行する必要があります。

手順 7: クリーン アップする

この手順では、デプロイされたノートブックとパイプラインをワークスペースから削除します。

  1. ルート ディレクトリから、次のように Databricks CLI を使って bundle destroy コマンドを実行します。

    databricks bundle destroy -t dev
    
  2. パイプラインの削除要求を次のように確定します。リソースを完全に破棄するように求められたら、「y」と入力し、Enter を押します。

  3. ノートブックの削除要求を確認します。以前にデプロイしたフォルダーとそのすべてのファイルを完全に破棄するように求められたら、「y」と入力し、Enter キーを押します。

  4. 開発マシンからもバンドルを削除する場合は、ここで手順 2 のローカル ディレクトリを削除できます。