メインコンテンツまでスキップ

既存のリソースをバンドルに移行する

バンドルを構築するときに、既に存在し、リモート ワークスペースに完全に構成されている Databricks リソースを含めることができます。Databricks CLI bundle generate コマンドを使用すると、既存のアプリ、ダッシュボード、ジョブ、パイプラインのバンドル内の構成をすばやく自動生成できます。「 databricks バンドルの生成」を参照してください。バンドル リソース コンフィギュレーション ファイルをコピーして手動で貼り付けることができる設定は、ジョブやパイプラインなどの一部のリソースの Databricks UI で使用できます。

バンドル内のリソースの構成を生成し、バンドルをデプロイしたら、 bundle deployment bind コマンドを使用して、バンドル内のリソースをワークスペース内の対応するリソースにバインドします。「 databricks バンドル デプロイ バインド」を参照してください。

このページでは、Databricks CLI または UI を使用してバンドル リソース構成を生成または取得する簡単な例を示します。

バンドル内のリソース定義の詳細については、「 Databricks Asset Bundles リソース」を参照してください。

Databricks CLI を使用して既存のジョブまたはパイプライン構成を生成する

既存のジョブまたはパイプラインのバンドル設定をプログラムで生成するには:

  1. UI のジョブまたはパイプラインのジョブ 詳細 または パイプライン詳細 サイドパネルから、既存のジョブまたはパイプラインの ID を取得します。 または、Databricks CLI databricks jobs list または databricks pipelines list-pipelines コマンドを使用します。

  2. bundle generate job または Databricks CLI コマンドbundle generate pipeline実行し、ジョブまたはパイプライン ID を設定します。

    Bash
    databricks bundle generate job --existing-job-id 6565621249
    Bash
    databricks bundle generate pipeline --existing-pipeline-id 6565621249

    このコマンドは、バンドルの resources フォルダにリソースのバンドル設定ファイルを作成し、参照されているアーティファクトを src フォルダにダウンロードします。

既存のダッシュボードの構成を生成することもできます。「 databricks バンドルの生成ダッシュボード」を参照してください。

UI を使用した既存のジョブ定義の取得

Databricks ワークスペース UI から既存のジョブ定義の YAML 表現を取得するには、次のようにします。

  1. Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。

  2. 必要に応じて、[ ジョブ ] と [自分が所有] フィルターを選択します。

  3. ジョブ の [名前 ] リンクをクリックします。

  4. [ 今すぐ実行 ] ボタンの横にあるケバブをクリックし、[ YAML として編集 ] をクリックします。

  5. YAML をコピーしてバンドルの databricks.yml ファイルに追加するか、バンドル プロジェクトの resources ディレクトリにジョブの構成ファイルを作成し、 databricks.yml ファイルから参照します。「リソース」を参照してください。

  6. 既存のジョブで参照されている Python ファイルとノートブックをダウンロードして、バンドルのプロジェクト ソースに追加します。通常、bundle アーティファクトはバンドル内の src ディレクトリにあります。

ヒント

ノートブックのユーザーインターフェースから[File] > [Export] > IPython ノートブック] をクリックすると、既存のノートブックをDatabricks .ipynbワークスペースからDatabricks 形式にエクスポートできます。

ノートブック、 Python ファイル、およびその他のアーティファクトをバンドルに追加した後、ジョブ定義内のこれらのファイルへの参照をローカルの場所に変更します。 たとえば、バンドルの resources フォルダに hello_job.job.yml 設定ファイルがあり、バンドルの src フォルダに hello.ipynb という名前のノートブックをダウンロードした場合、hello_job.job.yml ファイルの内容は次のようになります。

YAML
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 表現を取得するには、次のようにします。

  1. Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。

  2. 必要に応じて、 パイプライン フィルターを選択します。

  3. パイプラインの 名前 をクリックします。

  4. [開発 ] ボタンの横にある ケバブメニューのアイコン。をクリックし、[ 設定 YAML の表示 ] をクリックします。

  5. [パイプライン設定 YAML ] ダイアログで、コピー アイコンをクリックして、パイプライン定義の YAML をローカル クリップボードにコピーします。

  6. コピーした YAML をバンドルの databricks.yml ファイルに追加するか、バンドル プロジェクトの resources フォルダーにパイプラインの構成ファイルを作成し、 databricks.yml ファイルから参照します。「リソース」を参照してください。

  7. バンドルのプロジェクトソースを参照するPythonファイルおよびノートブックをダウンロードして追加します。通常、bundle アーティファクトはバンドル内の src ディレクトリにあります。

ヒント

ノートブックのユーザーインターフェースから[File] > [Export] > IPython ノートブック] をクリックすると、既存のノートブックをDatabricks .ipynbワークスペースからDatabricks 形式にエクスポートできます。

ノートブック、Python ファイル、その他のアーティファクトをバンドルに追加したら、パイプライン定義がそれらを適切に参照していることを確認します。たとえば、バンドルの src/ ディレクトリにある hello.ipynb という名前のノートブックの場合、次のようになります。

YAML
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 をワークスペース内の対応するリモートにバインドします。バンドル内のジョブ構成に対する更新が、バンドルが次にデプロイされるときに、対応するリモート・ジョブに適用されることを確認するためのプロンプトが出されます。

Bash
databricks bundle deployment bind hello_job 6565621249

バンドルリソースとワークスペース内の対応するリソースの間のリンクを削除するには、 bundle deployment unbindを使用します。「 databricks バンドル デプロイのバインド解除」を参照してください。

Bash
databricks bundle deployment unbind hello_job

2 つのワークスペースに存在するリソースを移行する

一部の設定では、同じリソースが複数のワークスペースに存在する場合があります。たとえば、同じジョブが開発と本番運用ワークスペースにある場合があります。 既存のジョブがバンドルに追加され、バンドルがこれらのワークスペースの 1 つにデプロイされると、重複ジョブが作成されます。 これを防ぐには、 databricks bundle generatedatabricks bundle deployment bind を一緒に使用します。

  1. バンドル databricks.ymlで dev ターゲットと prod ターゲットを定義します。

  2. 開発ターゲットのリソース (この例ではジョブ) のバンドル構成を生成します。

    Bash
    databricks bundle generate job --existing-job-id <dev_job_id> –-target dev
  3. prod のリソースの設定は、dev のリソースの設定とは異なる可能性が高いので、リソースの設定を生成したので、バンドル内のリソース (prod ターゲット内) の本番運用固有の設定を定義します。

    YAML
    targets:
    dev:
    default: true
    #...
    prod:
    #...
    resources:
    jobs:
    my_job:
    # Job prod settings
  4. バンドル内のリソースを dev ターゲットと prod ターゲットの既存のジョブにバインドします。

    Bash
    databricks bundle deployment bind my_job <dev_job_id> --target dev
    Bash
    databricks bundle deployment bind my_job <prod_job_id> --target prod

これで、バンドルを次の 2 つの環境にデプロイできます。

Bash
databricks bundle deploy --target dev
Bash
databricks bundle deploy --target prod