次の方法で共有


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

バンドルをビルドするときに、既に存在し、リモート ワークスペースで完全に構成されている 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または bundle generate pipelineDatabricks CLI コマンドを実行し、ジョブまたはパイプライン ID を設定します。

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

    このコマンドは、バンドルの resources フォルダー内のリソースのバンドル構成ファイルを作成し、参照されている成果物を src フォルダーにダウンロードします。

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

UI を使用して既存のジョブ定義を取得する

Azure Databricks ワークスペース UI から既存のジョブ定義の YAML 表現を取得するには:

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

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

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

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

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

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

    ヒント

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

    ノートブック、Python ファイル、およびその他の成果物をバンドルに追加したら、ジョブ定義内のこれらのファイルへの参照をローカルの場所に変更します。 たとえば、バンドルのhello_job.job.yml フォルダーにresources構成ファイルがあり、バンドルのhello.ipynb フォルダーに src という名前のノートブックをダウンロードした場合、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 を使用して既存のパイプライン定義を取得する

Azure Databricks ワークスペース UI から既存のパイプライン定義の YAML 表現を取得するには:

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

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

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

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

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

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

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

    ヒント

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

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

    resources:
      pipelines:
        hello_pipeline:
          name: hello_pipeline
          libraries:
            - notebook:
                path: ../src/hello.ipynb
    

リソースをリモートの対応するリソースにバインドする

通常、バンドルにリソースを追加した後は、バンドル内のリソースとワークスペース内の既存のリソースの同期を維持する必要があります。 bundle deployment bind コマンドを使用すると、それらをリンクできます。 リソースをバインドすると、ワークスペース内のリンクされた Azure 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 つのワークスペースに存在するリソースを移行する

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

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

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

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

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

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

バンドルを次の 2 つの環境にデプロイできるようになりました。

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