このページでは、Databricks アセット バンドルを使用して Python ホイール ファイルをビルド、デプロイ、実行する方法について説明します。 「Databricks アセット バンドルとは」を参照してください。
JAR をビルドして Unity カタログにアップロードする構成例については、JAR ファイルを Unity カタログ にアップロードするバンドルを参照してください。
Requirements
- Databricks CLI バージョン 0.218.0 以降がインストールされ、認証が構成されています。 インストールされている Databricks CLI のバージョンを確認するには、
databricks -vコマンドを実行します。 Databricks CLI のインストールについては、「Databricks CLI のインストールまたは更新」をご覧ください。 認証を構成するには、「 ワークスペースへのアクセスを構成する」を参照してください。 - テストを実行し、IDE からこのプロジェクトの依存関係をインストールするには、uv が必要です。
- リモート ワークスペースでワークスペース ファイルが有効になっている必要があります。 「ワークスペース ファイルとは」をご覧ください。
- 既存のカタログ。 カタログを作成するには、「カタログの 作成」を参照してください。
テンプレートを使用してバンドルを作成する
Python 用 Databricks アセット バンドルの既定のバンドル テンプレートを使用して 、バンドルを作成します。 このバンドルは、Python ホイール ファイルにビルドするファイルと、この Python ホイール ファイルをビルドするための Azure Databricks ジョブの定義で構成されます。 その後、デプロイされるファイルを検証し、Azure Databricks ワークスペース内で Python wheel ジョブから Python wheel ファイルをビルドしてデプロイします。
バンドルを最初から作成する場合は、「バンドルを手動で作成する」を参照してください。
手順 1: バンドルを作成する
バンドルには、デプロイするアセットと、実行するワークフローの設定が含まれます。
ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成されたバンドルを含むローカル開発マシン上のディレクトリに切り替えます。
Databricks バージョンの CLI を使って
bundle initコマンドを実行します。databricks bundle initTemplate to useでは、default-pythonキーを押して既定値Enterのままにします。Unique name for this projectでは、既定値my_projectのままで、または別の値を入力して、Enterキーを押します。 これにより、このバンドルのルート ディレクトリの名前が決まります。 このルート ディレクトリは、現在の作業ディレクトリ内に作成されます。Include a job that runs a notebookでは、noを選択してEnterキーを押します。 これは、サンプル ノートブックをバンドルに追加しないよう Databricks CLI に指示します。Include an ETL pipelineでは、noを選択してEnterキーを押します。 これにより、バンドルにサンプル パイプラインを定義しないように Databricks CLI に指示されます。Include a stub (sample) Python packageでは、yesキーを押して既定値Enterのままにします。 これは、サンプルの Python wheel パッケージ ファイルと関連するビルド手順をバンドルに追加するよう Databricks CLI に指示します。Use serverlessでは、yesを選択してEnterキーを押します。 これにより、Databricks CLI は、サーバーレス コンピューティングで実行するようにバンドルを構成するように指示します。Default catalog for any tables created by this project [hive_metastore]には、既存の Unity カタログ カタログの名前を入力します。Use a personal schema for each user working on this project.の場合は、[yes] を選択します。
手順 2: バンドルを調べる
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替え、任意の IDE でこのディレクトリを開きます。 特に重要なファイルは次のとおりです。
-
databricks.yml: このファイルは、バンドルの名前を指定し、バンドルのファイルへの参照を含み、ビルド設定whl指定し、カタログ変数とスキーマ変数を定義し、ターゲット ワークスペースの設定を指定します。 -
resources/sample_job.job.yml: このファイルは、Python ホイール ジョブの設定を指定します。 ジョブ設定については、 ジョブを参照してください。 -
src/: このフォルダーには、Python wheel ジョブが Python ホイール ファイルのビルドに使用するファイルが含まれています。 -
tests/: このフォルダーには、単体テストのサンプルが含まれています。 -
README.md: このファイルには、このバンドル テンプレートの概要と使用に関する追加情報が含まれています。
Note
Databricks Runtime 12.2 LTS 以下のクラスターに Python ホイール ファイルをインストールする場合は、次の最上位レベルのマッピングを databricks.yml ファイルに追加する必要があります。
# Applies to all tasks of type python_wheel_task.
experimental:
python_wheel_wrapper: true
手順 3: バンドル構成を検証する
次に、バンドル構成が有効かどうかを確認します。
ルート ディレクトリから Databricks CLI を使用して、
bundle validateコマンドを実行します。databricks bundle validateバンドル構成の概要が返されたら、検証は成功しています。 エラーが返される場合は、エラーを修正してから、この手順を繰り返します。
手順 4: バンドルをリモート ワークスペースにデプロイする
次に、バンドルをリモートの Azure Databricks ワークスペースにデプロイします。 これにより、Python ホイール ファイルがビルドされます。 ワークスペース内に Azure Databricks ジョブが作成されていることを確認します。
バンドル ルートから Databricks CLI を使用して、
bundle deployコマンドを実行します。databricks bundle deploy --target devローカルでビルドされた Python ホイール ファイルがデプロイされたことを確認します。
- Azure Databricks ワークスペースのサイドバーで、[ ワークスペース] をクリックします。
- 次の順序でフォルダーをクリックします: [ワークスペース] > [ユーザー] >
<your-username>> .bundle ><project-name>> dev > artifacts > .internal ><whl-file-name>.whl。
Python wheel ファイルはこのフォルダーにあるはずです。
ジョブが作成されたかどうかを確認します。
- Azure Databricks ワークスペースのサイドバーで、
ジョブ & パイプライン をクリックします。 - 必要に応じて、ジョブ と 私が所有 フィルターを選択します。
-
[dev
<your-username>]sample_jobをクリックします。 - [ タスク ] タブをクリックします。 python_wheel_taskが 1 つあるはずです。
- Azure Databricks ワークスペースのサイドバーで、
この手順の後にバンドルに変更を加えた場合は、手順 3 から 4 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイします。
手順 5: 配置されたプロジェクトを実行する
ワークスペースで Azure Databricks ジョブの実行をトリガーします。
ルート ディレクトリから Databricks CLI を使用して、
bundle runコマンドを実行します。databricks bundle run --target dev sample_jobターミナルに表示される
Run URLの値をコピーし、この値を Web ブラウザーに貼り付けて Azure Databricks ワークスペースを開きます。Azure Databricks ワークスペースで、タスクが正常に完了し、緑色のタイトル バーが表示されたら、ジョブ タスクをクリックして結果を表示します。
詩やセットアップツールを使用して whl を構築する
既定の python テンプレートで databricks bundle init を使用すると、 uv と pyproject.tomlを使用して Python ホイールを構築するバンドルを構成する方法を示すバンドルが作成されます。 ただし、代わりに詩や setuptools を使用してホイールを構築することもできます。
Poetry または setuptools をインストールする
Poetry または
setuptoolsをインストールします。Poetry
- まだインストールされていない場合は、詩バージョン 1.6 以降をインストールします。 インストールされている Poetry のバージョンを確認するには、
poetry -Vまたはpoetry --versionコマンドを実行します。 - Python バージョン 3.10 以降がインストールされていることを確認します。 Python のバージョンを確認するには、コマンド
python -Vまたはpython --versionを実行します。
Setuptools
wheelパッケージとsetuptoolsパッケージがまだインストールされていない場合は、次のコマンドを実行してインストールします。pip3 install --upgrade wheel setuptools- まだインストールされていない場合は、詩バージョン 1.6 以降をインストールします。 インストールされている Poetry のバージョンを確認するには、
このバンドルを Git プロバイダーに格納する場合は、プロジェクトのルートに
.gitignoreファイルを追加し、このファイルに次のエントリを追加します。Poetry
.databricks distSetuptools
.databricks build dist src/my_package/my_package.egg-info
ビルド ファイルを追加する
バンドルのルートで、Python ホイール ファイルの構築に詩と
setuptoolsのどちらを使用するかに応じて、次のフォルダーとファイルを作成します。Poetry
├── src │ └── my_package │ ├── __init__.py │ ├── main.py │ └── my_module.py └── pyproject.tomlSetuptools
├── src │ └── my_package │ ├── __init__.py │ ├── main.py │ └── my_module.py └── setup.pypyproject.tomlまたはsetup.pyファイルに次のコードを追加します。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を組織のプライマリメールの連絡先アドレスに置き換えます。 -
<my-package-description>を Python wheel ファイルの表示の説明に置き換えます。
Setup.py
from 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>を組織のプライマリメールの連絡先アドレスに置き換えます。 -
<my-package-description>を Python wheel ファイルの表示の説明に置き換えます。
-
成果物バンドル構成を追加する
artifactsマッピング構成をdatabricks.ymlに追加して、whl成果物をビルドします。Poetry
この構成では、
poetry buildコマンドを実行し、pyproject.tomlファイルへのパスがdatabricks.ymlファイルと同じディレクトリ内に配置されていることを示します。Note
Python wheel ファイルのビルドが完了しており、そのデプロイのみを行う場合は、
artifactsマッピングを省略することで、次のバンドル構成ファイルに変更を加えます。 その後、Databricks CLI は、Python ホイール ファイルが既にビルドされていることを前提とし、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: Standard_DS3_v2 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>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: Standard_DS3_v2 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>