次の方法で共有


Databricks アセット バンドルを使用して Python ホイール ファイルをビルドする

このページでは、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: バンドルを作成する

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

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

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

    databricks bundle init
    
  3. Template to use では、default-python キーを押して既定値 Enter のままにします。

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

  5. Include a job that runs a notebook では、no を選択して Enter キーを押します。 これは、サンプル ノートブックをバンドルに追加しないよう Databricks CLI に指示します。

  6. Include an ETL pipeline では、no を選択して Enter キーを押します。 これにより、バンドルにサンプル パイプラインを定義しないように Databricks CLI に指示されます。

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

  8. Use serverless では、yes を選択して Enter キーを押します。 これにより、Databricks CLI は、サーバーレス コンピューティングで実行するようにバンドルを構成するように指示します。

  9. Default catalog for any tables created by this project [hive_metastore]には、既存の Unity カタログ カタログの名前を入力します。

  10. 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: バンドル構成を検証する

次に、バンドル構成が有効かどうかを確認します。

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

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

手順 4: バンドルをリモート ワークスペースにデプロイする

次に、バンドルをリモートの Azure Databricks ワークスペースにデプロイします。 これにより、Python ホイール ファイルがビルドされます。 ワークスペース内に Azure Databricks ジョブが作成されていることを確認します。

  1. バンドル ルートから Databricks CLI を使用して、 bundle deploy コマンドを実行します。

    databricks bundle deploy --target dev
    
  2. ローカルでビルドされた Python ホイール ファイルがデプロイされたことを確認します。

    1. Azure Databricks ワークスペースのサイドバーで、[ ワークスペース] をクリックします。
    2. 次の順序でフォルダーをクリックします: [ワークスペース] > [ユーザー] ><your-username>> .bundle ><project-name>> dev > artifacts > .internal ><whl-file-name>.whl

    Python wheel ファイルはこのフォルダーにあるはずです。

  3. ジョブが作成されたかどうかを確認します。

    1. Azure Databricks ワークスペースのサイドバーで、ジョブ & パイプライン をクリックします。
    2. 必要に応じて、ジョブ私が所有 フィルターを選択します。
    3. [dev <your-username>] sample_job をクリックします。
    4. [ タスク ] タブをクリックします。 python_wheel_taskが 1 つあるはずです。

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

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

ワークスペースで Azure Databricks ジョブの実行をトリガーします。

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

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

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

詩やセットアップツールを使用して whl を構築する

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

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

  1. 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
    
  2. このバンドルを Git プロバイダーに格納する場合は、プロジェクトのルートに .gitignore ファイルを追加し、このファイルに次のエントリを追加します。

    Poetry

    .databricks
    dist
    

    Setuptools

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

ビルド ファイルを追加する

  1. バンドルのルートで、Python ホイール ファイルの構築に詩と setuptools のどちらを使用するかに応じて、次のフォルダーとファイルを作成します。

    Poetry

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── pyproject.toml
    

    Setuptools

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── setup.py
    
  2. pyproject.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 ファイルの表示の説明に置き換えます。

成果物バンドル構成を追加する

  1. 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>