メインコンテンツまでスキップ

Databricks Asset Bundles を使用して Python wheel ファイルを作成する

この記事では、 Databricks Asset Bundle プロジェクトの一部として Python wheel ファイルをビルド、デプロイ、実行する方法について説明します。 「Databricks アセットバンドルとは」を参照してください。

JAR をビルドして Unity Catalog にアップロードする構成例については、「 JAR ファイルを Unity Catalog にアップロードするバンドル」を参照してください。

必要条件

テンプレートを使用してバンドルを作成する

これらの手順では、Databricks Pythonの デフォルト バンドル テンプレートを使用してバンドルを作成します。このバンドルは、Python wheel ファイルに組み込むファイルと、このDatabricks Python wheelファイルを作成する ジョブの定義で構成されます。次に、デプロイされたファイルを検証、デプロイ、および Databricks ワークスペース内の Python wheel ジョブから Python wheel ファイルにビルドします。

注記

の Databricksデフォルト バンドル テンプレートは、Python uv を使用して ファイルをビルドします。Python wheeluvをインストールするには、uv のインストールを参照してください。

バンドルを最初から作成する場合は、「 バンドルを手動で作成する」を参照してください。

ステップ 1: バンドルを作成する

バンドルには、デプロイするアーティファクトと、実行するワークフローの設定が含まれています。

  1. ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成バンドルを格納するローカル開発マシン上のディレクトリに切り替えます。

  2. Databricks CLI バージョンを使用して、 bundle init コマンドを実行します。

    Bash
    databricks bundle init
  3. Template to useの場合は、Enterを押してデフォルト値の default-python のままにします。

  4. [ Unique name for this project] では、デフォルト値の my_projectをそのまま使用するか、別の値を入力して Enterキーを押します。 これにより、このバンドルのルートディレクトリの名前が決まります。 このルートディレクトリは、現在の作業ディレクトリ内に作成されます。

  5. Include a stub (sample) notebookの場合は、[no] を選択し、Enterキーを押します。これにより、Databricks CLI は、バンドルにサンプル ノートブックを追加しないように指示されます。

  6. Include a stub (sample) Delta Live Tables pipelineの場合は、[no] を選択し、Enterキーを押します。これにより、Databricks CLI は、バンドルにサンプル パイプラインを定義しないように指示されます。

  7. Include a stub (sample) Python packageの場合は、Enterを押してデフォルト値の yes のままにします。これにより、 Databricks CLI はサンプル Python wheel パッケージファイルと関連するビルド手順をバンドルに追加するように指示されます。

  8. 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 ファイルに追加する必要があります。

YAML
# Applies to all tasks of type python_wheel_task.
experimental:
python_wheel_wrapper: true

ステップ 3: プロジェクトのバンドル設定ファイルを検証する

この手順では、バンドル構成が有効かどうかを確認します。

  1. ルート ディレクトリから、Databricks CLI を使用して、次のように bundle validate コマンドを実行します。

    Bash
    databricks bundle validate
  2. バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。

この手順の後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドル構成がまだ有効かどうかを確認する必要があります。

手順 4: Python wheel ファイルをビルドし、ローカル プロジェクトをリモート ワークスペースにデプロイする

この手順では、 Python wheel ファイルがビルドされてリモート Databricks ワークスペースにデプロイされ、ワークスペース内に Databricks ジョブが作成されます。

  1. Databricks CLI を使用して、次のように bundle deploy コマンドを実行します。

    Bash
    databricks bundle deploy -t dev
  2. ローカルでビルドされた Python wheel ファイルがデプロイされたかどうかを確認するには:

    1. Databricksワークスペースのサイドバーで、[ ワークスペース ]をクリックします。
    2. 次のフォルダをクリックします: ワークスペース > Users > <your-username> > .bundle > <project-name> > dev > アーティファクト > .internal > <random-guid> .

    Python wheelファイルはこのフォルダにある必要があります。

  3. ジョブが作成されたかどうかを確認するには:

    1. Databricks ワークスペースのサイドバーで、[ ジョブとパイプライン] をクリックします。
    2. 必要に応じて、[ ジョブ ] と [自分が所有] フィルターを選択します。
    3. ジョブ<project-name>[dev <your-username>] をクリックします。
    4. 「タスク」 タブをクリックします。

    タスクは 1 つ、 main_task つあるべきです。

この手順の後にバンドルに変更を加えた場合は、手順 3 から 4 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイします。

手順 5: デプロイされたプロジェクトを実行する

この手順では、ワークスペースで Databricks ジョブを実行します。

  1. ルート ディレクトリから、Databricks CLI を使用して次のように bundle run コマンドを実行します。 <project-name> を手順 1 のプロジェクトの名前に置き換えます。

    Bash
    databricks bundle run -t dev <project-name>_job
  2. ターミナルに表示される Run URL の値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。

  3. Databricks ワークスペースで、タスクが正常に完了し、緑色のタイトル バーが表示されたら、 main_task タスクをクリックして結果を確認します。

Poetryまたはsetuptoolsを使用してwhlを構築します

databricks bundle init を デフォルト-Python テンプレートと共に使用すると、uvpyproject.tomlを使用してPython wheelを構築するバンドルの設定方法を示すバンドルが作成されます。ただし、代わりにPoetryまたは setuptools を使用してホイールを構築することもできます。

Poetryまたはsetuptoolsをインストールする

  1. Poetryまたはsetuptoolsをインストールします。

    タブ :::タブ-item[Poetry]

    • Poetry バージョン 1.6 以降がまだインストールされていない場合は、インストールします。 インストールされている Poetry のバージョンを確認するには、コマンド poetry -V または poetry --versionを実行します。
    • Pythonバージョン3.10以降がインストールされていることを確認してください。Python のバージョンを確認するには、コマンド python -V または python --versionを実行します。:::

    タブ-item[setuptools] wheel パッケージと setuptools パッケージがまだインストールされていない場合は、次のコマンドを実行してインストールします。

    Bash
    pip3 install --upgrade wheel setuptools

    ::: ::::

  2. このバンドルを Git プロバイダーと共に格納する場合は、プロジェクトのルートに .gitignore ファイルを追加し、このファイルに次のエントリを追加します。

    タブ :::タブ-item[Poetry]

    .databricks
    dist

    :::

    タブ-item[setuptools]

    .databricks
    build
    dist
    src/my_package/my_package.egg-info

    ::: ::::

ビルドファイルの追加

  1. バンドルのルートで、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

    ::: ::::

  2. 次のコードを 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]

    Python
    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> を組織の Eメール メイン連絡先アドレスに置き換えます。
    • <my-package-description> を Python wheel ファイルの表示説明に置き換えます。::: ::::

アーティファクトバンドル構成の追加

  1. artifactsマッピング設定をdatabricks.ymlに追加して、whlアーティファクトを構築します。

    タブ :::タブ-item[Poetry] この構成は poetry build コマンドを実行し、 pyproject.toml ファイルへのパスが databricks.yml ファイルと同じディレクトリにあることを示します。

注記

Python wheel ファイルを既にビルドしていて、それをデプロイしたいだけの場合は、 artifacts マッピングを省略して、次のバンドル設定ファイルを変更します。その後、 Databricks CLI は Python wheel ファイルが既にビルドされていると想定し、 libraries 配列の whl エントリで指定されたファイルを自動的にデプロイします。

YAML
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 ファイルと同じディレクトリにあることを示します。

YAML
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>

::: ::::

:::