既存のリソースをバンドルに移行する
バンドルを構築するときに、既に存在し、リモート ワークスペースに完全に構成されている Databricks リソースを含めることができます。Databricks CLI bundle generate コマンドを使用すると、既存のアプリ、ダッシュボード、ジョブ、パイプラインのバンドル内の構成をすばやく自動生成できます。「 databricks バンドルの生成」を参照してください。バンドル リソース コンフィギュレーション ファイルをコピーして手動で貼り付けることができる設定は、ジョブやパイプラインなどの一部のリソースの Databricks UI で使用できます。
バンドル内のリソースの構成を生成し、バンドルをデプロイしたら、 bundle deployment bind コマンドを使用して、バンドル内のリソースをワークスペース内の対応するリソースにバインドします。「 databricks バンドル デプロイ バインド」を参照してください。
このページでは、Databricks CLI または UI を使用してバンドル リソース構成を生成または取得する簡単な例を示します。バンドル内のリソース定義の詳細については、 Databricks Asset Bundles リソース」を参照してください。
Databricks UI を使用して、ワークスペース内のバンドルに既存のリソースを追加できます。「既存のリソースをバンドルに追加する」を参照してください。
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 6565621249Bashdatabricks bundle generate pipeline --existing-pipeline-id 6565621249このコマンドは、バンドルの
resourcesフォルダにリソースのバンドル設定ファイルを作成し、参照されているアーティファクトをsrcフォルダにダウンロードします。
既存のダッシュボードの構成を生成することもできます。「 databricks バンドルの生成ダッシュボード」を参照してください。
既存の Spark パイプラインの構成を生成する
Spark宣言型パイプライン (SDP) プロジェクトのバンドル構成をプログラムで生成するには ( spark-pipeline.ymlファイルがあります):
-
Spark パイプライン プロジェクト全体をバンドルの
srcフォルダーにコピーまたは移動します。 -
次のコマンドを実行します。
Bashdatabricks pipelines generate --existing-pipeline-dir src/my_pipeline
詳細については、 「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 を使用して既存のパイプライン定義を取得する
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 devBashdatabricks bundle deployment bind my_job <prod_job_id> --target prod
これで、バンドルを次の 2 つの環境にデプロイできます。
databricks bundle deploy --target dev
databricks bundle deploy --target prod