バンドルをビルドするときに、既に存在し、リモート ワークスペースで完全に構成されている 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またはbundle generate pipelineDatabricks CLI コマンドを実行し、ジョブまたはパイプライン ID を設定します。databricks bundle generate job --existing-job-id 6565621249databricks bundle generate pipeline --existing-pipeline-id 6565621249このコマンドは、バンドルの
resourcesフォルダー内のリソースのバンドル構成ファイルを作成し、参照されている成果物をsrcフォルダーにダウンロードします。
既存のダッシュボードの構成を生成することもできます。 databricks バンドルの生成ダッシュボードを参照してください。
UI を使用して既存のジョブ定義を取得する
Azure Databricks ワークスペース UI から既存のジョブ定義の YAML 表現を取得するには:
Azure Databricks ワークスペースのサイドバーで、
ジョブ & パイプライン をクリックします。必要に応じて、ジョブ と 私が所有 フィルターを選択します。
ジョブの [名前] リンクをクリックします。
[ 今すぐ実行 ] ボタンの横にある kebab をクリックし、[ YAML として編集] をクリックします。
YAML をコピーしてバンドルの
databricks.ymlファイルに追加するか、バンドル プロジェクトのresourcesディレクトリにジョブの構成ファイルを作成し、databricks.ymlファイルから参照します。 「リソース」を参照してください。既存のジョブで参照されている 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 表現を取得するには:
Azure Databricks ワークスペースのサイドバーで、
ジョブ & パイプライン をクリックします。必要に応じて、[ パイプライン ] フィルターを選択します。
パイプラインの 名前 をクリックします。
[開発] ボタンの横にある
をクリックし、[設定 YAML の表示] をクリックします。
[パイプライン設定 YAML] ダイアログのパイプライン定義の YAML を、コピー アイコンをクリックしてローカル クリップボードにコピーします。
バンドルの
databricks.ymlファイルにコピーした YAML を追加するか、バンドル プロジェクトのresourcesフォルダーにパイプラインの構成ファイルを作成し、databricks.ymlファイルから参照します。 「リソース」を参照してください。バンドルのプロジェクト ソースに参照されている 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 generate と databricks bundle deployment bind を一緒に使用します。
バンドル
databricks.ymlで開発ターゲットと prod ターゲットを定義します。開発ターゲットのリソース (この例ではジョブ) のバンドル構成を生成します。
databricks bundle generate job --existing-job-id <dev_job_id> –-target devprod でのリソースの構成は、開発時のリソースの構成とは異なる可能性があるため、リソースの構成を生成したので、バンドル内の (prod ターゲット内の) リソースの運用固有の設定を定義します。
targets: dev: default: true #... prod: #... resources: jobs: my_job: # Job prod settingsバンドル内のリソースを開発ターゲットと prod ターゲットの既存のジョブにバインドします。
databricks bundle deployment bind my_job <dev_job_id> --target devdatabricks bundle deployment bind my_job <prod_job_id> --target prod
バンドルを次の 2 つの環境にデプロイできるようになりました。
databricks bundle deploy --target dev
databricks bundle deploy --target prod