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