既存のリソースをバンドルに移行する
バンドルを構築するときに、既に存在し、リモート ワークスペースに完全に構成されている Databricks リソースを含めることができます。Databricks CLI bundle generate
コマンドを使用すると、既存のアプリ、ダッシュボード、ジョブ、パイプラインのバンドル内の構成をすばやく自動生成できます。「 databricks バンドルの生成」を参照してください。バンドル リソース コンフィギュレーション ファイルをコピーして手動で貼り付けることができる設定は、ジョブやパイプラインなどの一部のリソースの Databricks UI で使用できます。
バンドル内のリソースの構成を生成し、バンドルをデプロイしたら、 bundle deployment bind
コマンドを使用して、バンドル内のリソースをワークスペース内の対応するリソースにバインドします。「 databricks バンドル デプロイ バインド」を参照してください。
このページでは、Databricks CLI または UI を使用してバンドル リソース構成を生成または取得する簡単な例を示します。
バンドル内のリソース定義の詳細については、「 Databricks Asset Bundles リソース」を参照してください。
Databricks CLI を使用して既存のジョブまたはパイプライン構成を生成する
既存のジョブまたはパイプラインのバンドル設定をプログラムで生成するには:
-
UI のジョブまたはパイプラインのジョブ 詳細 または パイプライン詳細 サイドパネルから、既存のジョブまたはパイプラインの ID を取得します。 または、Databricks CLI
databricks jobs list
またはdatabricks pipelines list-pipelines
コマンドを使用します。 -
bundle generate job
または Databricks CLI コマンドbundle generate pipeline
実行し、ジョブまたはパイプライン ID を設定します。Bashdatabricks bundle generate job --existing-job-id 6565621249
Bashdatabricks bundle generate pipeline --existing-pipeline-id 6565621249
このコマンドは、バンドルの
resources
フォルダにリソースのバンドル設定ファイルを作成し、参照されているアーティファクトをsrc
フォルダにダウンロードします。
既存のダッシュボードの構成を生成することもできます。「 databricks バンドルの生成ダッシュボード」を参照してください。
UI を使用した既存のジョブ定義の取得
Databricks ワークスペース UI から既存のジョブ定義の YAML 表現を取得するには、次のようにします。
-
Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。
-
必要に応じて、[ ジョブ ] と [自分が所有] フィルターを選択します。
-
ジョブ の [名前 ] リンクをクリックします。
-
[ 今すぐ実行 ] ボタンの横にあるケバブをクリックし、[ YAML として編集 ] をクリックします。
-
YAML をコピーしてバンドルの
databricks.yml
ファイルに追加するか、バンドル プロジェクトのresources
ディレクトリにジョブの構成ファイルを作成し、databricks.yml
ファイルから参照します。「リソース」を参照してください。 -
既存のジョブで参照されている Python ファイルとノートブックをダウンロードして、バンドルのプロジェクト ソースに追加します。通常、bundle アーティファクトはバンドル内の
src
ディレクトリにあります。
ノートブックのユーザーインターフェースから[File] > [Export] > IPython ノートブック] をクリックすると、既存のノートブックをDatabricks .ipynb
ワークスペースからDatabricks 形式にエクスポートできます。
ノートブック、 Python ファイル、およびその他のアーティファクトをバンドルに追加した後、ジョブ定義内のこれらのファイルへの参照をローカルの場所に変更します。 たとえば、バンドルの resources
フォルダに hello_job.job.yml
設定ファイルがあり、バンドルの src
フォルダに hello.ipynb
という名前のノートブックをダウンロードした場合、hello_job.job.yml
ファイルの内容は次のようになります。
resources:
jobs:
hello_job:
name: hello_job
tasks:
- task_key: hello_task
notebook_task:
notebook_path: ../src/hello.ipynb
UI でジョブをコードとして表示する方法の詳細については、「 ジョブをコードとして表示する」を参照してください。
UI を使用して既存のパイプライン定義を取得する
既存の Lakeflow 宣言型パイプラインを Databricks Asset Bundle プロジェクトに変換する方法を示すチュートリアルについては、「Lakeflow 宣言型パイプラインを Databricks Asset Bundle プロジェクトに変換する」を参照してください。
Databricks ワークスペース UI から既存のパイプライン定義の YAML 表現を取得するには、次のようにします。
-
Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。
-
必要に応じて、 パイプライン フィルターを選択します。
-
パイプラインの 名前 をクリックします。
-
[開発 ] ボタンの横にある
をクリックし、[ 設定 YAML の表示 ] をクリックします。
-
[パイプライン設定 YAML ] ダイアログで、コピー アイコンをクリックして、パイプライン定義の YAML をローカル クリップボードにコピーします。
-
コピーした YAML をバンドルの
databricks.yml
ファイルに追加するか、バンドル プロジェクトのresources
フォルダーにパイプラインの構成ファイルを作成し、databricks.yml
ファイルから参照します。「リソース」を参照してください。 -
バンドルのプロジェクトソースを参照するPythonファイルおよびノートブックをダウンロードして追加します。通常、bundle アーティファクトはバンドル内の
src
ディレクトリにあります。
ノートブックのユーザーインターフェースから[File] > [Export] > IPython ノートブック] をクリックすると、既存のノートブックをDatabricks .ipynb
ワークスペースからDatabricks 形式にエクスポートできます。
ノートブック、Python ファイル、その他のアーティファクトをバンドルに追加したら、パイプライン定義がそれらを適切に参照していることを確認します。たとえば、バンドルの src/
ディレクトリにある hello.ipynb
という名前のノートブックの場合、次のようになります。
resources:
pipelines:
hello_pipeline:
name: hello_pipeline
libraries:
- notebook:
path: ../src/hello.ipynb
リソースをリモートの対応するリソースにバインドする
通常、バンドルにリソースを追加した後、バンドル内のリソースとワークスペース内の既存のリソースが同期していることを確認する必要があります。bundle deployment bind
コマンドを使用すると、それらをリンクできます。リソースをバインドすると、ワークスペース内のリンクされた Databricks リソースは、次の bundle deploy
のバンドルで定義されている構成に基づいて更新されます。
詳細については、 bundle deployment bind
に関する情報とリソース サポートの詳細については、「 databricks バンドル デプロイ バインド」を参照してください。
次のコマンドは、リソース hello_job
をワークスペース内の対応するリモートにバインドします。バンドル内のジョブ構成に対する更新が、バンドルが次にデプロイされるときに、対応するリモート・ジョブに適用されることを確認するためのプロンプトが出されます。
databricks bundle deployment bind hello_job 6565621249
バンドルリソースとワークスペース内の対応するリソースの間のリンクを削除するには、 bundle deployment unbind
を使用します。「 databricks バンドル デプロイのバインド解除」を参照してください。
databricks bundle deployment unbind hello_job
2 つのワークスペースに存在するリソースを移行する
一部の設定では、同じリソースが複数のワークスペースに存在する場合があります。たとえば、同じジョブが開発と本番運用ワークスペースにある場合があります。 既存のジョブがバンドルに追加され、バンドルがこれらのワークスペースの 1 つにデプロイされると、重複ジョブが作成されます。 これを防ぐには、 databricks bundle generate
と databricks bundle deployment bind
を一緒に使用します。
-
バンドル
databricks.yml
で dev ターゲットと prod ターゲットを定義します。 -
開発ターゲットのリソース (この例ではジョブ) のバンドル構成を生成します。
Bashdatabricks bundle generate job --existing-job-id <dev_job_id> –-target dev
-
prod のリソースの設定は、dev のリソースの設定とは異なる可能性が高いので、リソースの設定を生成したので、バンドル内のリソース (prod ターゲット内) の本番運用固有の設定を定義します。
YAMLtargets:
dev:
default: true
#...
prod:
#...
resources:
jobs:
my_job:
# Job prod settings -
バンドル内のリソースを dev ターゲットと prod ターゲットの既存のジョブにバインドします。
Bashdatabricks bundle deployment bind my_job <dev_job_id> --target dev
Bashdatabricks bundle deployment bind my_job <prod_job_id> --target prod
これで、バンドルを次の 2 つの環境にデプロイできます。
databricks bundle deploy --target dev
databricks bundle deploy --target prod