Delta Live Tables パイプラインを Databricks Asset Bundle プロジェクトに変換する
この記事では、既存の Delta Live Tables (DLT) パイプラインをバンドル プロジェクトに変換する方法について説明します。 バンドルを使用すると、Databricks のデータ処理設定を 1 つのソース管理された YAML ファイルで定義および管理できるため、メンテナンスが容易になり、ターゲット環境への自動デプロイが可能になります。
変換プロセスの概要
既存のパイプラインをバンドルに変換する手順は次のとおりです。
バンドルに変換する以前に設定されたパイプラインにアクセスできることを確認します。
バンドルを格納するためのフォルダー (できればソース管理階層) を作成または準備します。
Databricks CLI を使用して、既存のパイプラインからバンドルの構成を生成します。
生成されたバンドル構成を確認して、完全であることを確認します。
バンドルを元のパイプラインにリンクします。
バンドル設定を使用して、パイプラインをターゲット ワークスペースにデプロイします。
要件
開始する前に、次のものが必要です。
ローカル開発マシンにインストールされている Databricks CLI 。 Databricks アセット バンドルを使用するには、Databricks CLI バージョン 0.218.0 以降が必要です。
バンドルで管理する既存の DLT パイプラインの ID。 この ID を取得する方法については、「 UI を使用して既存のパイプライン定義を取得する」を参照してください。
既存の DLT パイプラインが実行される Databricks ワークスペースの承認。 Databricks CLI 呼び出しの認証と承認を構成するには、「 Databricks リソースへのアクセスを認証する」を参照してください。
ステップ 1: バンドル プロジェクトのフォルダーを設定する
Databricks で Git フォルダーとして構成されている Git リポジトリにアクセスできる必要があります。 このリポジトリにバンドル プロジェクトを作成すると、ソース管理が適用され、対応する Databricks ワークスペースの Git フォルダーを通じて他の共同作業者が使用できるようになります。 (Git フォルダーの詳細については、「 Databricks Git フォルダーの Git 統合」を参照してください)。
ローカル マシン上のクローン Git リポジトリのルートに移動します。
フォルダ階層の適切な場所に、バンドルプロジェクト専用のフォルダを作成します。 例えば:
mkdir - p ~/source/my-pipelines/ingestion/events/my-bundle
現在の作業ディレクトリをこの新しいフォルダに変更します。 例えば:
cd ~/source/my-pipelines/ingestion/events/my-bundle
新しいバンドルを初期化するには、
databricks bundle init
を実行し、プロンプトに応答します。 完了すると、プロジェクトの新しいホームフォルダーにdatabricks.yml
という名前のプロジェクト構成ファイルが作成されます。 このファイルは、コマンドラインからパイプラインをデプロイするために必要です。 この構成ファイルの詳細については、「 Databricks アセット バンドルの構成」を参照してください。
ステップ 2: パイプライン設定を生成する
クローン作成された Git リポジトリのフォルダー ツリー内のこの新しいディレクトリから、次の Databricks CLI コマンドを実行し、DLT パイプラインの ID を次のように指定します <pipeline-id>
。
databricks bundle generate pipeline --existing-pipeline-id <pipeline-id> --profile <profile-name>
generate
コマンドを実行すると、バンドルの in resources
フォルダにパイプラインのバンドル設定ファイルが作成され、参照されているアーティファクトが src
フォルダにダウンロードされます。--profile
(または -p
フラグ) は省略可能ですが、特定の Databricks 構成プロファイル ( Databricks CLIのインストール時に作成された .databrickscfg
ファイルで定義) があり、デフォルト プロファイルの代わりに使用する場合は、このコマンドで指定します。 Databricks構成プロファイルに関する情報については、「構成プロファイルDatabricks」を参照してください。
ステップ 3: バンドル プロジェクト ファイルを確認する
bundle generate
コマンドが完了すると、次の2つの新しいフォルダが作成されます。
resources
is は、プロジェクト構成ファイルを含むプロジェクトのサブディレクトリです。src
は、クエリやノートブックなどのソース ファイルが格納されているプロジェクト フォルダーです。
このコマンドは、いくつかの追加ファイルも作成します。
*.pipeline.yml
resources
サブディレクトリの下にあります。このファイルには、DLT パイプラインの特定の構成と設定が含まれています。SQL クエリなどのソース ファイルは、既存の DLT パイプラインからコピーされた
src
サブディレクトリにあります。
├── databricks.yml # Project configuration file created with the bundle init command
├── resources/
│ └── {your-pipeline-name.pipeline}.yml # Pipeline configuration
└── src/
└── {SQl-query-retrieved-from-your-existing-pipeline}.sql # Your pipeline's declarative query
ステップ 4: バンドル パイプラインを既存のパイプラインにバインドする
バンドル内のパイプライン定義を既存のパイプラインにリンク ( バインド) して、変更を加えたときにパイプラインを最新の状態に保つ必要があります。 これを行うには、次の Databricks CLI コマンドを実行します。
databricks bundle deployment bind <pipeline-name> <pipeline-ID> --profile <profile-name>
<pipeline-name>
はパイプラインの名前です。 この名前は、新しい resources
ディレクトリ内のパイプライン構成のファイル名のプレフィックス付き文字列値と同じである必要があります。 たとえば、resources
フォルダに ingestion_data_pipeline.pipeline.yml
という名前のパイプライン設定ファイルがある場合は、パイプライン名として ingestion_data_pipeline
を指定する必要があります。
<pipeline-ID>
はパイプラインの ID です。 これは、これらの手順の要件の一部としてコピーしたものと同じです。
ステップ 5: 新しいバンドルを使用してパイプラインをデプロイする
次に、 bundle deploy
Databricks CLI コマンドを使用して、パイプライン バンドルをターゲット ワークスペースにデプロイします。
databricks bundle deploy --target <target-name> --profile <profile-name>
--target
フラグは必須であり、構成されたターゲット ワークスペース名 (development
や production
など) に一致する文字列に設定する必要があります。
このコマンドが成功すると、DLT パイプライン構成が外部プロジェクトに格納され、他のワークスペースに読み込んで実行でき、アカウント内の他の Databricks ユーザーと簡単に共有できます。
トラブルシューティング
問題 |
ソリューション |
---|---|
実行中に「 |
現在、 |
既存のパイプライン設定が、生成されたパイプライン YAML 設定の値と一致しません |
パイプライン ID は、バンドル構成 YML ファイルに表示されません。 他の不足している設定に気付いた場合は、手動で適用できます。 |
成功のためのヒント
常にバージョン管理を使用してください。 Databricks Git フォルダーを使用していない場合は、プロジェクトのサブディレクトリとファイルを Git またはその他のバージョン管理されたリポジトリまたはファイル システムに格納します。
パイプラインを本番運用環境にデプロイする前に、非本番運用環境 (「開発」環境や「テスト」環境など) でパイプラインをテストします。 誤って設定ミスを持ち込むのは簡単です。
関連リソース
バンドルを使用してデータ処理を定義および管理する方法の詳細については、以下を参照してください。
Databricks Asset Bundle を使用して Delta Live Tables パイプラインを開発します。 このトピックでは、既存のパイプラインではなく新しいパイプラインのバンドルを作成し、ソース管理された処理ノートブックを提供する方法について説明します。