Databricks Asset Bundles を使用して Python wheel ファイルを作成する
この記事では、 Databricks Asset Bundle プロジェクトの一部として Python wheel ファイルをビルド、デプロイ、実行する方法について説明します。 「Databricks アセットバンドルとは」を参照してください。
JAR をビルドして Unity Catalog にアップロードする構成例については、「 JAR ファイルを Unity Catalog にアップロードするバンドル」を参照してください。
必要条件
- Databricks CLI バージョン 0.218.0 以降がインストールされ、認証が構成されている。インストールされている Databricks CLI のバージョンを確認するには、コマンド
databricks -v
を実行します。Databricks CLI をインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。認証を構成するには、「 ワークスペースへのアクセスを構成する」を参照してください。 - リモートワークスペースでは、ワークスペースファイルが有効になっている必要があります。 「ワークスペースファイルとは」を参照してください。
テンプレートを使用してバンドルを作成する
これらの手順では、Databricks Pythonの デフォルト バンドル テンプレートを使用してバンドルを作成します。このバンドルは、Python wheel ファイルに組み込むファイルと、このDatabricks Python wheelファイルを作成する ジョブの定義で構成されます。次に、デプロイされたファイルを検証、デプロイ、および Databricks ワークスペース内の Python wheel ジョブから Python wheel ファイルにビルドします。
の Databricksデフォルト バンドル テンプレートは、Python uv を使用して ファイルをビルドします。Python wheeluv
をインストールするには、uv のインストールを参照してください。
バンドルを最初から作成する場合は、「 バンドルを手動で作成する」を参照してください。
ステップ 1: バンドルを作成する
バンドルには、デプロイするアーティファクトと、実行するワークフローの設定が含まれています。
-
ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成バンドルを格納するローカル開発マシン上のディレクトリに切り替えます。
-
Databricks CLI バージョンを使用して、
bundle init
コマンドを実行します。Bashdatabricks bundle init
-
Template to use
の場合は、Enter
を押してデフォルト値のdefault-python
のままにします。 -
[
Unique name for this project
] では、デフォルト値のmy_project
をそのまま使用するか、別の値を入力してEnter
キーを押します。 これにより、このバンドルのルートディレクトリの名前が決まります。 このルートディレクトリは、現在の作業ディレクトリ内に作成されます。 -
Include a stub (sample) notebook
の場合は、[no
] を選択し、Enter
キーを押します。これにより、Databricks CLI は、バンドルにサンプル ノートブックを追加しないように指示されます。 -
Include a stub (sample) Delta Live Tables pipeline
の場合は、[no
] を選択し、Enter
キーを押します。これにより、Databricks CLI は、バンドルにサンプル パイプラインを定義しないように指示されます。 -
Include a stub (sample) Python package
の場合は、Enter
を押してデフォルト値のyes
のままにします。これにより、 Databricks CLI はサンプル Python wheel パッケージファイルと関連するビルド手順をバンドルに追加するように指示されます。 -
Use serverless
の場合は、[yes
] を選択し、Enter
キーを押します。これにより、バンドルをサーバレス コンピュートで実行するように Databricks CLI に指示します。
ステップ 2: バンドルを探索する
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替え、このディレクトリを任意の IDE で開きます。特に関心のあるファイルには、次のものがあります。
databricks.yml
: このファイルは、バンドルの名前を指定し、whl
ビルド設定を指定し、ジョブ構成ファイルへの参照を含め、ターゲット ワークスペースの設定を定義します。resources/<project-name>_job.yml
: このファイルは、Python wheel ジョブの設定を指定します。src/<project-name>
: このディレクトリには、Python wheel ジョブが Python wheel ファイルの構築に使用するファイルが含まれています。
12.2 Python wheel以前のクラスタリングにDatabricks RuntimeLTS ファイルをインストールする場合は、次のトップレベルマッピングをdatabricks.yml
ファイルに追加する必要があります。
# Applies to all tasks of type python_wheel_task.
experimental:
python_wheel_wrapper: true
ステップ 3: プロジェクトのバンドル設定ファイルを検証する
この手順では、バンドル構成が有効かどうかを確認します。
-
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle validate
コマンドを実行します。Bashdatabricks bundle validate
-
バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。
この手順の後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドル構成がまだ有効かどうかを確認する必要があります。
手順 4: Python wheel ファイルをビルドし、ローカル プロジェクトをリモート ワークスペースにデプロイする
この手順では、 Python wheel ファイルがビルドされてリモート Databricks ワークスペースにデプロイされ、ワークスペース内に Databricks ジョブが作成されます。
-
Databricks CLI を使用して、次のように
bundle deploy
コマンドを実行します。Bashdatabricks bundle deploy -t dev
-
ローカルでビルドされた Python wheel ファイルがデプロイされたかどうかを確認するには:
- Databricksワークスペースのサイドバーで、[ ワークスペース ]をクリックします。
- 次のフォルダをクリックします: ワークスペース > Users >
<your-username>
> .bundle ><project-name>
> dev > アーティファクト > .internal ><random-guid>
.
Python wheelファイルはこのフォルダにある必要があります。
-
ジョブが作成されたかどうかを確認するには:
- Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。
- 必要に応じて、[ ジョブ ] と [自分が所有] フィルターを選択します。
- ジョブ
<project-name>
[dev<your-username>
] をクリックします。 - 「タスク」 タブをクリックします。
タスクは 1 つ、 main_task つあるべきです。
この手順の後にバンドルに変更を加えた場合は、手順 3 から 4 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイします。
手順 5: デプロイされたプロジェクトを実行する
この手順では、ワークスペースで Databricks ジョブを実行します。
-
ルート ディレクトリから、Databricks CLI を使用して次のように
bundle run
コマンドを実行します。<project-name>
を手順 1 のプロジェクトの名前に置き換えます。Bashdatabricks bundle run -t dev <project-name>_job
-
ターミナルに表示される
Run URL
の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。 -
Databricks ワークスペースで、タスクが正常に完了し、緑色のタイトル バーが表示されたら、 main_task タスクをクリックして結果を確認します。
Poetryまたはsetuptoolsを使用してwhlを構築します
databricks bundle init
を デフォルト-Python テンプレートと共に使用すると、uv
と pyproject.toml
を使用してPython wheelを構築するバンドルの設定方法を示すバンドルが作成されます。ただし、代わりにPoetryまたは setuptools
を使用してホイールを構築することもできます。
Poetryまたはsetuptoolsをインストールする
-
Poetryまたは
setuptools
をインストールします。タブ :::タブ-item[Poetry]
- Poetry バージョン 1.6 以降がまだインストールされていない場合は、インストールします。 インストールされている Poetry のバージョンを確認するには、コマンド
poetry -V
またはpoetry --version
を実行します。 - Pythonバージョン3.10以降がインストールされていることを確認してください。Python のバージョンを確認するには、コマンド
python -V
またはpython --version
を実行します。:::
タブ-item[setuptools]
wheel
パッケージとsetuptools
パッケージがまだインストールされていない場合は、次のコマンドを実行してインストールします。Bashpip3 install --upgrade wheel setuptools
::: ::::
- Poetry バージョン 1.6 以降がまだインストールされていない場合は、インストールします。 インストールされている Poetry のバージョンを確認するには、コマンド
-
このバンドルを Git プロバイダーと共に格納する場合は、プロジェクトのルートに
.gitignore
ファイルを追加し、このファイルに次のエントリを追加します。タブ :::タブ-item[Poetry]
.databricks
dist:::
タブ-item[setuptools]
.databricks
build
dist
src/my_package/my_package.egg-info::: ::::
ビルドファイルの追加
-
バンドルのルートで、Python wheel ファイルの構築に Poetry を使用するか
setuptools
を使用するかに応じて、次のフォルダとファイルを作成します。タブ :::タブ-item[Poetry]
├── src
│ └── my_package
│ ├── __init__.py
│ ├── main.py
│ └── my_module.py
└── pyproject.toml:::
タブ-item[setuptools]
├── src
│ └── my_package
│ ├── __init__.py
│ ├── main.py
│ └── my_module.py
└── setup.py::: ::::
-
次のコードを
pyproject.toml
ファイルまたはsetup.py
ファイルに追加します。タブ :::タブ-item[pyproject.toml]
[tool.poetry]
name = "my_package"
version = "0.0.1"
description = "<my-package-description>"
authors = ["my-author-name <my-author-name>@<my-organization>"]
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.scripts]
main = "my_package.main:main"my-author-name
を組織のプライマリ連絡先の名前に置き換えます。my-author-name>@<my-organization
を組織の Eメール メイン連絡先アドレスに置き換えます。<my-package-description>
を Python wheel ファイルの表示説明に置き換えます。:::
タブアイテム[setup.py]
Pythonfrom setuptools import setup, find_packages
import src
setup(
name = "my_package",
version = "0.0.1",
author = "<my-author-name>",
url = "https://<my-url>",
author_email = "<my-author-name>@<my-organization>",
description = "<my-package-description>",
packages=find_packages(where='./src'),
package_dir={'': 'src'},
entry_points={
"packages": [
"main=my_package.main:main"
]
},
install_requires=[
"setuptools"
]
)https://<my-url>
を組織の URL に置き換えます。<my-author-name>
を組織のプライマリ連絡先の名前に置き換えます。<my-author-name>@<my-organization>
を組織の Eメール メイン連絡先アドレスに置き換えます。<my-package-description>
を Python wheel ファイルの表示説明に置き換えます。::: ::::
アーティファクトバンドル構成の追加
-
artifacts
マッピング設定をdatabricks.yml
に追加して、whl
アーティファクトを構築します。タブ :::タブ-item[Poetry] この構成は
poetry build
コマンドを実行し、pyproject.toml
ファイルへのパスがdatabricks.yml
ファイルと同じディレクトリにあることを示します。
Python wheel ファイルを既にビルドしていて、それをデプロイしたいだけの場合は、 artifacts
マッピングを省略して、次のバンドル設定ファイルを変更します。その後、 Databricks CLI は Python wheel ファイルが既にビルドされていると想定し、 libraries
配列の whl
エントリで指定されたファイルを自動的にデプロイします。
bundle:
name: my-wheel-bundle
artifacts:
default:
type: whl
build: poetry build
path: .
resources:
jobs:
wheel-job:
name: wheel-job
tasks:
- task_key: wheel-task
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: i3.xlarge
data_security_mode: USER_ISOLATION
num_workers: 1
python_wheel_task:
entry_point: main
package_name: my_package
libraries:
- whl: ./dist/*.whl
targets:
dev:
workspace:
host: <workspace-url>
:::
タブ-item[setuptools]
この設定は setuptools
コマンドを実行し、 setup.py
ファイルへのパスが databricks.yml
ファイルと同じディレクトリにあることを示します。
bundle:
name: my-wheel-bundle
artifacts:
default:
type: whl
build: python3 setup.py bdist wheel
path: .
resources:
jobs:
wheel-job:
name: wheel-job
tasks:
- task_key: wheel-task
new_cluster:
spark_version: 13.3.x-scala2.12
node_type_id: i3.xlarge
data_security_mode: USER_ISOLATION
num_workers: 1
python_wheel_task:
entry_point: main
package_name: my_package
libraries:
- whl: ./dist/*.whl
targets:
dev:
workspace:
host: <workspace-url>
::: ::::
:::