dbx からバンドルへの移行
Databricks では、Databricks Labs が dbx
する代わりに、Databricks アセット バンドルを使用することをお勧めします。 dbx
に関する関連記事は廃止されており、更新されない可能性があります。
この記事では、Databricks Labs が dbx
するプロジェクトを Databricks アセット バンドルに移行する方法について説明します。 「Databricks Labs による dbx の概要」および「Databricks アセットバンドルとは」を参照してください。
移行する前に、 dbx
by Databricks Labs と Databricks アセット バンドルの次の制限事項と機能の比較に注意してください。
機能の比較
移行する前に、 dbx
by Databricks Labs の次の機能が Databricks アセット バンドルにどのように実装されているかに注意してください。
テンプレートとプロジェクト
dbx
Jinjaテンプレートのサポートを提供します。デプロイメント設定に Jinja テンプレートを含め、環境変数をインラインまたは変数ファイルを介して渡すことができます。 推奨されませんが、 dbx
はカスタムユーザー関数の実験的なサポートも提供しています。
バンドルは、構成を再利用するための Go テンプレート のサポートを提供します。 ユーザーは、事前に作成されたテンプレートに基づいてバンドルを作成できます。 テンプレートには、カスタムユーザー関数を除いて、ほぼ完全なパリティがあります。
ビルド管理
dbx
は、 pip wheel
、Poetry、Flitを通じてビルドサポートを提供します。 ユーザーは、プロジェクトのdeployment.yml
ファイルのbuild
セクションでビルドオプションを指定できます。
バンドルを使用すると、ユーザーは Python wheel ファイルをビルド、デプロイ、および実行できます。 ユーザーは、バンドルの databricks.yml
ファイル内の組み込み whl
エントリを活用できます。
コードの同期、デプロイ、実行
dbx
を使用すると、Databricks ジョブなどのワークスペース リソースの生成とは別に コードをアップロード できます。
バンドルは、常に コードをアップロードし、ワークスペース リソースを作成または更新 します。 これにより、デプロイが簡素化され、すでに進行中のジョブのブロック条件を回避できます。
dbx プロジェクトのバンドルへの移行
前述の制限事項と、 dbx
by Databricks Labs と Databricks Asset Bundle の機能比較を確認したら、 dbx
からバンドルに移行する準備が整います。
Databricks では、 dbx
プロジェクトの移行を開始するには、 dbx
プロジェクトを元のフォルダーに保持し、元の dbx
プロジェクトの内容をコピーする別の空白フォルダーを用意することをお勧めします。 この別のフォルダが新しいバンドルになります。 元のフォルダにある dbx
プロジェクトをバンドルに変換し始めてから間違いを犯したり、最初からやり直したりすると、予期しない問題が発生する可能性があります。
手順 1: Databricks CLI をインストールしてセットアップする
Databricks アセット バンドルは、Databricks CLI バージョン 0.218.0 以降で一般公開されています。 Databricks CLI バージョン 0.218.0 以降を既にインストールして設定している場合は、手順 2 に進んでください。
バンドルは、Databricks CLI バージョン 0.18 以前と互換性がありません。
- Databricks CLI バージョン 0.218.0 以降をインストールまたは更新します。 「Databricks CLI のインストールまたは更新」を参照してください。
- ターゲットの Databricks ワークスペースでの認証用に Databricks CLI を設定します (たとえば、 Databricks 個人用アクセス トークン認証を使用します)。 その他の Databricks 認証の種類については、「 Databricks CLI の認証」を参照してください。
ステップ 2: バンドル設定ファイルを作成する
Visual Studio Code、PyCharm Professional、IntelliJ IDEA Ultimate など、YAML ファイルや JSON スキーマ ファイルをサポートする IDE を使用している場合は、次のように、バンドル設定ファイルを作成するだけでなく、ファイルの構文やフォーマットを確認したり、コード補完のヒントを提供したりするためにも、IDE を使用できます。
- Visual Studio Code
- PyCharm Professional
- IntelliJ IDEA Ultimate
-
Add YAML language server support to Visual Studio Code, for example by installing the YAML extension from the Visual Studio Code Marketplace.
-
Generate the Databricks Asset Bundle configuration JSON schema file by using the Databricks CLI to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Use Visual Studio Code to create or open a bundle configuration file within the current directory. By convention, this file is named
databricks.yml
. -
Add the following comment to the beginning of your bundle configuration file:
YAML# yaml-language-server: $schema=bundle_config_schema.json
In the preceding comment, if your Databricks Asset Bundle configuration JSON schema file is in a different path, replace bundle_config_schema.json
with the full path to your schema file.
- Use the YAML language server features that you added earlier. For more information, see your YAML language server’s documentation.
-
Generate the Databricks Asset Bundle configuration JSON schema file by using the Databricks CLI to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure PyCharm to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
Use PyCharm to create or open a bundle configuration file. By convention, this file is named
databricks.yml
. As you type, PyCharm checks for JSON schema syntax and formatting and provides code completion hints.
-
Generate the Databricks Asset Bundle configuration JSON schema file by using the Databricks CLI to run the
bundle schema
command and redirect the output to a JSON file. For example, generate a file namedbundle_config_schema.json
within the current directory, as follows:Bashdatabricks bundle schema > bundle_config_schema.json
-
Configure IntelliJ IDEA to recognize the bundle configuration JSON schema file, and then complete the JSON schema mapping, by following the instructions in Configure a custom JSON schema.
-
Use IntelliJ IDEA to create or open a bundle configuration file. By convention, this file is named
databricks.yml
. As you type, IntelliJ IDEA checks for JSON schema syntax and formatting and provides code completion hints.
ステップ3:dbxプロジェクト設定をdatabricks.ymlに変換する
dbx
プロジェクトの .dbx/project.json
ファイルの設定を、バンドルの databricks.yml
ファイルの同等の設定に変換します。詳細については、 dbx プロジェクト設定の databricks.yml への変換を参照してください。
ステップ 4: dbx デプロイメント設定を databricks.yml に変換する
dbx
プロジェクトの conf
フォルダの設定を、バンドルの databricks.yml
ファイル内の同等の設定に変換します。詳細については、 dbx 配備設定の databricks.yml への変換を参照してください。
ステップ 5: バンドルを検証する
アーティファクトをデプロイする前、または Databricks ジョブ、DLT パイプライン、または MLOps パイプラインを実行する前に、バンドル設定ファイルの構文が正しいことを確認する必要があります。 これを行うには、バンドル ルートから bundle validate
コマンドを実行します。
databricks bundle validate
bundle validate
に関する情報については、「バンドルの検証」を参照してください。
ステップ 6: バンドルをデプロイする
指定したローカル アーティファクトをリモート ワークスペースにデプロイするには、バンドル ルートから bundle deploy
コマンドを実行します。 コマンド・オプションが指定されていない場合は、バンドル構成ファイルで宣言されているデフォルト・ターゲットが使用されます。
databricks bundle deploy
特定のターゲットのコンテキスト内でアーティファクトをデプロイするには、バンドル構成ファイル内で宣言されているターゲットの名前とともに、 -t
(または --target
) オプションを指定します。 たとえば、 development
という名前で宣言されたターゲットの場合、次のようになります。
databricks bundle deploy -t development
bundle deploy
に関する情報については、「バンドルのデプロイ」を参照してください。
バンドル定義のジョブとパイプラインを Databricks ワークスペース内の既存のジョブとパイプラインにリンクして、同期を維持できます。 バンドル・リソースのバインドを参照してください。
ステップ 7: バンドルを実行する
特定のジョブまたはパイプラインを実行するには、バンドル ルートから bundle run
コマンドを実行します。 バンドル設定ファイル内で宣言されているジョブまたはパイプラインを指定する必要があります。 -t
オプションが指定されていない場合は、バンドル構成ファイル内で宣言されているデフォルト・ターゲットが使用されます。たとえば、デフォルトターゲットのコンテキスト内で hello_job
という名前のジョブを実行するには、次のようにします。
databricks bundle run hello_job
development
という名前で宣言されたターゲットのコンテキスト内で hello_job
という名前のジョブを実行するには、次のようにします。
databricks bundle run -t development hello_job
bundle run
に関する情報については、「ジョブまたはパイプラインの実行」を参照してください。
(オプション)ステップ 8: GitHub で CI/CD のバンドルを構成する
CI/CD に GitHub を使用する場合は、GitHub Actions を使用して、特定の GitHub ワークフロー イベントやその他の条件に基づいて、 databricks bundle deploy
コマンドと databricks bundle run
コマンドを自動的に実行できます。 「Databricks アセット バンドルと GitHub Actions を使用して CI/CD ワークフローを実行する」を参照してください。
dbx プロジェクト設定の databricks.yml への変換
dbx
の場合、プロジェクト設定は、デフォルトではプロジェクトの .dbx
フォルダー内の project.json
という名前のファイルにあります。「プロジェクト ファイル参照」を参照してください。
バンドルの場合、バンドル構成は、デフォルトではバンドルのルートフォルダ内の databricks.yml
という名前のファイルにあります。 「Databricks アセット バンドルの構成」を参照してください。
次の例の内容を含む conf/project.json
ファイルの場合:
{
"environments": {
"default": {
"profile": "charming-aurora",
"storage_type": "mlflow",
"properties": {
"workspace_directory": "/Workspace/Shared/dbx/charming_aurora",
"artifact_location": "/Workspace/Shared/dbx/projects/charming_aurora"
}
}
},
"inplace_jinja_support": true
}
対応する databricks.yml
ファイルは次のとおりです。
bundle:
name: <some-unique-bundle-name>
targets:
default:
workspace:
profile: charming-aurora
root_path: /Shared/dbx/charming_aurora
artifact_path: /Shared/dbx/projects/charming_aurora
resources:
# See an example "resources" mapping in the following section.
この例の前の conf/project.json
ファイル内の次のオブジェクトは、 databricks.yml
ファイルではサポートされておらず、回避策はありません。
inplace_jinja_support
storage_type
conf/project.json
ファイル内の次の追加の許可されたオブジェクトは、databricks.yml
ファイルではサポートされておらず、回避策はありません。
enable-context-based-upload-for-execute
enable-failsafe-cluster-reuse-with-assets
dbx デプロイメント設定の databricks.yml への変換
dbx
の場合、デプロイメント設定はデフォルトではプロジェクトのconf
フォルダ内のファイルにあります。デプロイメント・ファイル・リファレンスを参照してください。デプロイメント設定ファイルには、デフォルトで次のいずれかのファイル名が付けられています。
deployment.yml
deployment.yaml
deployment.json
deployment.yml.j2
deployment.yaml.j2
deployment.json.j2
バンドルの場合、デプロイ設定はデフォルトでバンドルのルートフォルダ内の databricks.yml
という名前のファイルにあります。 「Databricks アセット バンドルの構成」を参照してください。
次の例の内容を含む conf/deployment.yml
ファイルの場合:
build:
python: 'pip'
environments:
default:
workflows:
- name: 'workflow1'
tasks:
- task_key: 'task1'
python_wheel_task:
package_name: 'some-pkg'
entry_point: 'some-ep'
対応する databricks.yml
ファイルは次のとおりです。
bundle:
name: <some-unique-bundle-name>
targets:
default:
workspace:
# See an example "workspace" mapping in the preceding section.
resources:
jobs:
workflow1:
tasks:
- task_key: task1
python_wheel_task:
package_name: some-pkg
entry_point: some-ep
この例の前の conf/deployment.yml
ファイル内の次のオブジェクトは、 databricks.yml
ファイルではサポートされておらず、回避策はありません。
build
(ただし、「アセットバンドルを使用した Python wheelファイルの開発Databricks 」を参照してください)
conf/deployment.yml
ファイルで許可される次の追加のオブジェクトと機能は、databricks.yml
ファイルではサポートされておらず、特に明記されていない限り回避策はありません。
access_control_list
custom
(代わりに標準のYAMLアンカーを使用してください)deployment_config
- Databricks ジョブ 2.0 形式 (代わりにジョブ 2.1 形式を使用)
dbx
Jinja の特徴- 名前ベースのプロパティ