次の方法で共有


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

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

必要条件

  • Databricks CLI バージョン 0.205 以降。 お使いのインストールされている Databricks CLI のバージョンをチェックするには、databricks -v コマンドを実行します。 Databricks CLI をインストールするには、「Databricks CLI のインストールまたは更新」を参照してください。
  • リモート ワークスペースでは、ワークスペース ファイルが有効になっている必要があります。 「ワークスペース ファイルとは」を参照してください。

決定: 手動で、またはテンプレートを使ってバンドルを作成する

スターター バンドルをテンプレートを使って作成するか、手動で作成するかを決定します。 テンプレートを使ってバンドルを作成する方が高速で簡単ですが、バンドルによって生成されるコンテンツが不要な場合があります。また、バンドルの既定の設定を実際のアプリケーション用にさらにカスタマイズする必要があります。 バンドルを手動で作成するとバンドルの設定を完全に制御できますが、最初からすべての作業を行うため、バンドルの動作について十分に理解しておく必要があります。 次のいずれかの手順を選びます。

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

これらの手順では、Python 用の Azure Databricks 既定バンドル テンプレートを使ってバンドルを作成します。 以下の手順では、Python ホイール ファイルに構築するファイルと、この Python ホイール ファイルを構築する Azure Databricks ジョブの定義で構成されるバンドルを作成する方法について説明します。 次に、Azure Databricks ワークスペース内の Python ホイール ジョブから、デプロイされたファイルを検証、デプロイし、Python ホイール ファイルに構築します。

Python 用の既定の Azure Databricks バンドル テンプレートでは、setuptools を使って Python ホイール ファイルを構築します。 代わりに Poetry を使って Python ホイール ファイルを構築する場合は、このセクションで後ほど説明する手順のようにして、setuptools の実装を Poetry の実装に入れ替えてください。

手順 1: 認証を設定する

この手順では、お使いの開発マシン上の Databricks CLI とお使いの Azure Databricks ワークスペース間の認証を設定します。 この記事では、OAuth ユーザー対マシン (U2M) 認証と、DEFAULT という名前の対応する Azure Databricks 構成プロファイルを認証に使用することを前提としています。

Note

U2M 認証は、これらの手順をリアルタイムで試す場合に適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」内の、M2M 認証のセットアップ手順をご参照ください。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行し、OAuth トークン管理をローカルで開始します。

    次のコマンド内では、<workspace-url> を Azure Databricks ワークスペース単位の URL (例: https://adb-1234567890123456.7.azuredatabricks.net) に置き換えます。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI では、入力した情報を Azure Databricks 構成プロファイルとして保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプト内で、Databricks CLI を使用してコマンド databricks auth profiles を実行します。 特定のプロファイルの既存の設定を表示するには、コマンド databricks auth env --profile <profile-name> を実行します。

  3. Web ブラウザー内で、画面の指示に従って Azure Databricks ワークスペースにログインします。

  4. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ --host 値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけるのに役立つ --host-p のオプションを一緒に指定することが必要になる場合があります。

手順 2: バンドルを作成する

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

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

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

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

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

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

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

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

手順 3: バンドルを調べる

テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルート ディレクトリに切り替え、Visual Studio Code などの任意の IDE を使ってこのディレクトリを開きます。 特に重要なファイルは次のとおりです。

  • databricks.yml: このファイルには、バンドルのプログラム名を指定し、Python ホイール ジョブ定義への参照を含み、ターゲット ワークスペースに関する設定を指定します。
  • resources/<project-name>_job.yml: このファイルには、Python ホイール ジョブの設定を指定します。
  • src/<project-name>: このディレクトリには、Python ホイール ジョブが Python ホイール ファイルを構築する際に使うファイルが格納されています。

Note

Databricks Runtime 12.2 LTS 以下がインストールされているターゲット クラスターに Python ホイール ファイルをインストールしたい場合は、次の最上位レベル マッピングを databricks.yml ファイルに追加する必要があります。

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

このマッピングは、次のことを行うよう Databricks CLI に指示します。

  • Python ホイール ファイルのコピーをバックグラウンドでデプロイします。 通常、このデプロイ パスは ${workspace.artifact_path}/.internal/<random-id>/<wheel-filename>.whl です。
  • 上でデプロイした Python ホイール ファイルをターゲット クラスターにインストールする手順を含むノートブックをバックグラウンドで作成します。 通常、このノートブックのパスは ${workspace.file_path}/.databricks/bundle/<target-name>/.internal/notebook_<job-name>_<task-key> です。
  • Python ホイール タスクを含むジョブを実行したとき、そのタスクで上記の Python ホイール ファイルが参照されていると、上記のノートブックを実行するジョブがバックグラウンドで作成されます。

Databricks Runtime 13.1 以降がインストールされているターゲット クラスターの場合は、Azure Databricks ワークスペース ファイル システムからの Python wheel のインストールがこれらのターゲット クラスターに自動的にインストールされるため、このマッピングを指定する必要はありません。

手順 4: Poetry を使用するようにプロジェクトのバンドルを更新する

既定のバンドル テンプレートでは、setuptools と共にファイル setup.pyrequirements-dev.txt を使って Python ホイール ファイルを構築します。 これらの既定値をそのまま使う場合は、「手順 5: プロジェクトのバンドル構成ファイルを検証する」に進んでください。

setuptools ではなく Poetry を使うようにプロジェクトのバンドルを更新するには、ローカル開発コンピューターが次の要件を満たしていることを確認します。

  • Poetry バージョン 1.6 以降。 インストールされている Poetry のバージョンを確認するには、poetry -V または poetry --version コマンドを実行します。 Poetry をインストールまたはアップグレードするには、「インストール」をご覧ください。
  • Python バージョン 3.10 以降。 Python のバージョンを確認するには、コマンド python -V または python --version を実行します。
  • Databricks CLI バージョン 0.209.0 以降。 Databricks CLI のバージョンを確認するには、コマンド databricks -v または databricks --version を実行します。 「Databricks CLI のインストールまたは更新」を参照してください。

プロジェクトのバンドルを次のように変更します。

  1. バンドルのルート ディレクトリから次のコマンドを実行して、Python wheel のビルドを Python 用に初期化するよう poetry に指示します。

    poetry init
    
  2. Poetry には、完了するためのいくつかのプロンプトが表示されます。 Python wheel のビルドの場合は、以下のプロンプトに次のように答えて、プロジェクトのバンドル内の関連する既定の設定と一致させます。

    1. Package name に対しては、/src の下の子フォルダーの名前を入力して、Enter キーを押します。 これは、バンドルの setup.py ファイルで定義されているパッケージの name 値である必要もあります。
    2. Version については、「0.0.1」と入力し、Enter を押します。 これは、バンドルの src/<project-name>/__init__.py ファイルで定義されているバージョン番号と一致します。
    3. Description に対しては、「wheel file based on <project-name>/src」と入力して (<project-name> をプロジェクトの名前に置き換えます)、Enter キーを押します。 これは、テンプレートの setup.py ファイルで定義されている description の値と一致します。
    4. Author に対しては、Enter キーを押します。 この既定値は、テンプレートの setup.py ファイルで定義されている作成者と一致します。
    5. License に対しては、Enter キーを押します。 テンプレートではライセンスは定義されていません。
    6. Compatible Python versions に対しては、ターゲットの Azure Databricks クラスターでのものと一致する Python のバージョンを入力して (例: ^3.10)、Enter キーを押します。
    7. Would you like to define your main dependencies interactively? に対しては、「no」と入力して、Enter キーを押します。 依存関係は後で定義します。
    8. Would you like to define your development dependencies interactively? に対しては、「no」と入力して、Enter キーを押します。 依存関係は後で定義します。
    9. Do you confirm generation? に対しては、Enter キーを押します。
  3. プロンプトが完了すると、Poetry によって pyproject.toml ファイルがバンドルのプロジェクトに追加されます。 pyproject.toml ファイルの詳細については、pyproject.toml ファイルを参照してください。

  4. バンドルのルート ディレクトリから、pyproject.toml ファイルを読み取り、依存関係を解決してインストールし、poetry.lock ファイルを作成して依存関係をロックし、最後に仮想環境を作成するよう、poetry に指示します。 そのためには、次のコマンドを実行します。

    poetry install
    
  5. pyproject.toml ファイルの末尾に次のセクションを追加し、<project-name> を、src/<project-name>/main.py ファイルを含むディレクトリの名前 (例: my_project) に置き換えます。

    [tool.poetry.scripts]
    main = "<project-name>.main:main"
    

    このセクションでは、Python wheel ジョブに対する Python wheel のエントリ ポイントを指定します。

  6. バンドルの databricks.yml ファイルの最上位レベルに次のマッピングを追加します。

    artifacts:
      default:
        type: whl
        build: poetry build
        path: .
    

    このマッピングは、Poetry を使って Python ホイール ファイルを構築するよう Databricks CLI に指示します。

  7. Poetry には必要ないので、setup.pyrequirements-dev.txt ファイルをバンドルから削除します。

手順 5: プロジェクトのバンドル構成ファイルを検証する

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

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

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

この手順の後、お使いのバンドルに何か変更を加える場合はこの手順を繰り返し、お使いのバンドル構成がまだ有効かどうかをチェックする必要があります。

手順 6: Python ホイール ファイルを構築し、ローカル プロジェクトをリモート ワークスペースにデプロイする

この手順では、Python ホイール ファイルを構築し、構築された Python ホイール ファイルをリモートの Azure Databricks ワークスペースにデプロイし、ワークスペース内に Azure Databricks ジョブを作成します。

  1. setuptools を使っていて、wheelsetuptools パッケージをまだインストールしていない場合は、次のコマンドを実行してインストールします。

    pip3 install --upgrade wheel setuptools
    
  2. Visual Studio Code ターミナル内で、Databricks CLI を使用して次のように bundle deploy コマンドを実行します。

    databricks bundle deploy -t dev
    
  3. ローカル環境に構築済みの Python ホイール ファイルがデプロイされているかどうかを確認したい場合:

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

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

  4. ジョブが作成されたかどうかを確認したい場合:

    1. Azure Databricks ワークスペースのサイドバーで、[ワークフロー] をクリックします。
    2. [ジョブ] タブの [dev <your-username>] <project-name>_job をクリックします。
    3. [タスク] タブをクリックします。

    main_task という 1 つのタスクがあるはずです。

この手順の後でバンドルを変更する場合は、手順 5 と 6 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。

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

この手順では、お使いのワークスペース内でその Azure Databricks ジョブを実行します。

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

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

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

この手順の後でバンドルを変更する場合は、手順 5 から 7 を繰り返してバンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行する必要があります。

テンプレートを使ってバンドルを作成する手順は以上で完了です。

手動でバンドルを作成する

これらの手順では、バンドルを最初から手作業で作成します。 以下の手順では、Python ホイール ファイルに構築するファイルと、この Python ホイール ファイルを構築する Databricks ジョブの定義で構成されるバンドルを作成する方法について説明します。 その後、検証を行ってデプロイし、Databricks ワークスペース内の Python ホイール ジョブから、デプロイされたファイルを Python ホイール ファイルとして構築します。

これらの手順には、YAML ファイルへのコンテンツの追加が含まれます。 必要に応じて、YAML ファイルの操作時に自動スキーマ提案とアクションを提供する統合開発環境 (IDE) を使用できます。 次の手順では、Visual Studio Code Marketplace からインストールされた YAML 拡張機能を備えた Visual Studio Code を使用します。

これらの手順では、以下のことを既に理解していることを前提としています。

次の手順のようにして、Poetry または setuptools を使って Python ホイール ファイルを構築し、Python ホイール ファイルをデプロイし、デプロイされた Python ホイール ファイルを実行する、サンプル バンドルを作成します。

Python ホイール ファイルの構築が済んでいて、そのデプロイと実行だけを行いたい場合は、「手順 3: バンドル構成ファイルを作成する」のバンドル設定ファイルでの Python ホイール ファイルの構成の指定まで進んでください。

手順 1: 認証を設定する

この手順では、お使いの開発マシン上の Databricks CLI とお使いの Azure Databricks ワークスペース間の認証を設定します。 この記事では、OAuth ユーザー対マシン (U2M) 認証と、DEFAULT という名前の対応する Azure Databricks 構成プロファイルを認証に使用することを前提としています。

Note

U2M 認証は、これらの手順をリアルタイムで試す場合に適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」内の、M2M 認証のセットアップ手順をご参照ください。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行し、OAuth トークン管理をローカルで開始します。

    次のコマンド内では、<workspace-url> を Azure Databricks ワークスペース単位の URL (例: https://adb-1234567890123456.7.azuredatabricks.net) に置き換えます。

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI では、入力した情報を Azure Databricks 構成プロファイルとして保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプト内で、Databricks CLI を使用してコマンド databricks auth profiles を実行します。 特定のプロファイルの既存の設定を表示するには、コマンド databricks auth env --profile <profile-name> を実行します。

  3. Web ブラウザー内で、画面の指示に従って Azure Databricks ワークスペースにログインします。

  4. プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    同じ --host 値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけるのに役立つ --host-p のオプションを一緒に指定することが必要になる場合があります。

手順 2: バンドルを作成する

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

  1. Python ホイール ファイルの構築に Poetry と 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. __init__.py ファイルは空のままにします。

  3. 次のコードを main.py ファイルに追加して保存します。

    from my_package.my_module import *
    
    def main():
    
      first = 200
      second = 400
    
      print(f"{first} + {second} = {add_two_numbers(first, second)}")
      print(f"{second} - {first} = {subtract_two_numbers(second, first)}")
      print(f"{first} * {second} = {multiply_two_numbers(first, second)}")
      print(f"{second} / {first} = {divide_two_numbers(second, first)}")
    
    if __name__ == "__main__":
      main()
    
  4. 次のコードを my_module.py ファイルに追加して保存します。

    def add_two_numbers(a, b):
      return a + b
    
    def subtract_two_numbers(a, b):
      return a - b
    
    def multiply_two_numbers(a, b):
      return a * b
    
    def divide_two_numbers(a, b):
      return a / b
    
  5. 次のコードを 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 ホイール ファイルの表示説明に置き換えます。

    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 ホイール ファイルの表示説明に置き換えます。

手順 3: バンドル構成ファイルを作成する

バンドル構成ファイルでは、デプロイする成果物と実行するワークフローを記述します。

  1. バンドルのルートに、databricks.yml という名前のバンドル構成ファイルを追加します。 次のコードをこのファイルに追加します。

    Poetry

    Note

    Python ホイール ファイルの構築が済んでいて、そのデプロイだけを行いたい場合は、次のバンドル構成ファイルを変更して 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

    bundle:
      name: my-wheel-bundle
    
    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>
    

    <workspace-url>ワークスペースごとの URL に置き換えます (例: https://adb-1234567890123456.7.azuredatabricks.net)。

    artifacts マッピングは、Poetry を使って Python ホイール ファイルを構築する場合は必須であり、setuptools を使って Python ホイール ファイルを構築する場合は省略できます。 artifacts マッピングには、1 つ以上の成果物の定義と次のマッピングが含まれます。

    • type マッピングが存在し、Python ホイール ファイルを構築することを指定する whl に設定されている必要があります。 setuptools では、成果物の定義が指定されていない場合は、whl が既定値になります。
    • path マッピングは、Poetry の場合は pyproject.toml ファイルへのパスを示し、setuptools の場合は setup.py ファイルへのパスを示します。 このパスは、databricks.yml ファイルに対する相対パスです。 setuptools の場合、このパスの既定値は . (databricks.yml ファイルと同じディレクトリ) です。
    • build マッピングは、Python ホイール ファイルを構築するために実行するカスタムのビルド コマンドを示します。 setuptools の場合、このコマンドの既定値は python3 setup.py bdist wheel です。
    • files マッピングは、Python wheel のビルドに含める追加ファイルを指定する 1 つ以上の source マッピングで構成されます。 既定値はありません。

    Note

    Databricks Runtime 12.2 LTS 以下がインストールされているターゲット クラスターに Python ホイール ファイルをインストールしたい場合は、次の最上位レベル マッピングを databricks.yml ファイルに追加する必要があります。

    # Applies to jobs with python_wheel_task and that use
    # clusters with Databricks Runtime 13.0 or below installed.
    experimental:
      python_wheel_wrapper: true
    

    このマッピングは、次のことを行うよう Databricks CLI に指示します。

    • Python ホイール ファイルのコピーをバックグラウンドでデプロイします。 通常、このデプロイ パスは ${workspace.artifact_path}/.internal/<random-id>/<wheel-filename>.whl です。
    • 上でデプロイした Python ホイール ファイルをターゲット クラスターにインストールする手順を含むノートブックをバックグラウンドで作成します。 通常、このノートブックのパスは ${workspace.file_path}/.databricks/bundle/<target-name>/.internal/notebook_<job-name>_<task-key> です。
    • Python ホイール タスクを含むジョブを実行したとき、そのタスクで上記の Python ホイール ファイルが参照されていると、上記のノートブックを実行するジョブがバックグラウンドで作成されます。

    Databricks Runtime 13.1 以降がインストールされているターゲット クラスターの場合は、Azure Databricks ワークスペース ファイル システムからの Python wheel のインストールがこれらのターゲット クラスターに自動的にインストールされるため、このマッピングを指定する必要はありません。

  2. Poetry を使う場合は、次のようにします。

    • まだインストールされていない場合は、バージョン 1.6 以降の Poetry をインストールします。 インストールされている Poetry のバージョンを確認するには、poetry -V または poetry --version コマンドを実行します。
    • Python バージョン 3.10 以降がインストールされていることを確認します。 Python のバージョンを確認するには、コマンド python -V または python --version を実行します。
    • Databricks CLI バージョン 0.209.0 以降があることを確認します。 Databricks CLI のバージョンを確認するには、コマンド databricks -v または databricks --version を実行します。 「Databricks CLI のインストールまたは更新」を参照してください。
  3. setuptools を使っていて、wheelsetuptools パッケージがまだインストールされていない場合は、次のコマンドを実行してインストールします。

    pip3 install --upgrade wheel setuptools
    
  4. このバンドルを Git プロバイダーと共に格納する意図がある場合は、プロジェクトのルートに .gitignore ファイルを追加し、このファイルに次のエントリを追加します。

    Poetry

    .databricks
    dist
    

    setuptools

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

手順 4: プロジェクトのバンドル構成ファイルを検証する

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

  1. ルート ディレクトリから、バンドル構成ファイルを検証します。

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

この手順の後、お使いのバンドルに何か変更を加える場合はこの手順を繰り返し、お使いのバンドル構成がまだ有効かどうかをチェックする必要があります。

手順 5: Python ホイール ファイルを構築し、ローカル プロジェクトをリモート ワークスペースにデプロイする

Python ホイール ファイルをローカルに構築し、構築した Python ホイール ファイルをワークスペースにデプロイし、ノートブックをワークスペースにデプロイして、ワークスペースにジョブを作成します。

databricks bundle deploy -t dev

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

  1. デプロイされたノートブックを使って、デプロイされた Python ホイール ファイルを呼び出す、デプロイされたジョブを実行します。

    databricks bundle run -t dev wheel-job
    
  2. 出力では、Run URL をコピーして、Web ブラウザーのアドレス バーに貼り付けます。

  3. ジョブ実行の [出力] ページに、次の結果が表示されます。

    200 + 400 = 600
    400 - 200 = 200
    200 * 400 = 80000
    400 / 200 = 2.0
    

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

ジョブ用の Python ホイール ファイルを構築してインストールする

Poetry または setuptools を使って Python ホイール ファイルを構築してから、その Python ホイール ファイルをジョブで使うには、1 つまたは 2 つのマッピングを databricks.yml ファイルに追加する必要があります。

Poetry を使う場合は、次の artifacts マッピングを databricks.yml ファイルに含める必要があります。 このマッピングは、poetry build コマンドを実行し、databricks.yml ファイルと同じディレクトリにある pyproject.toml ファイルを使います。

artifacts:
  default:
    type: whl
    build: poetry build
    path: .

Note

artifacts マッピングは、setuptools の場合は省略できます。 setuptools の場合、既定では、Databricks CLI はコマンド python3 setup.py bdist_wheel を実行し、databricks.yml ファイルと同じディレクトリにある setup.py ファイルを使います。 Databricks CLI では、wheelsetuptools パッケージがまだインストールされていない場合は、ユーザーが pip3 install --upgrade wheel setuptools などのコマンドを実行して既にインストールしているものと、想定されています。

また、ジョブ タスクの libraries マッピングには、構築された Python ホイール ファイルへのパスを、それが宣言された構成ファイルからの相対パスで指定する whl 値が含まれている必要があります。 次の例は、ノートブック タスクでのこれを示したものです (省略記号は、簡潔にするために省略された内容を示しています)。

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-job-notebook-task
          notebook_task:
            notebook_path: ./my_notebook.py
          libraries:
            - whl: ./dist/*.whl
          new_cluster:
            # ...

パイプライン用の Python ホイール ファイルを構築してインストールする

Poetry または setuptools を使って Python ホイール ファイルを構築し、Delta Live Tables パイプラインでその Python ホイール ファイルを参照するには、Poetry を使う場合は databricks.yml ファイルにマッピングを追加する必要があり、次のようにパイプライン ノートブックに %pip install コマンドを追加する必要があります。

Poetry を使う場合は、次の artifacts マッピングを databricks.yml ファイルに含める必要があります。 このマッピングは、poetry build コマンドを実行し、databricks.yml ファイルと同じディレクトリにある pyproject.toml ファイルを使います。

artifacts:
  default:
    type: whl
    build: poetry build
    path: .

Note

artifacts マッピングは、setuptools の場合は省略できます。 setuptools の場合、既定では、Databricks CLI はコマンド python3 setup.py bdist_wheel を実行し、databricks.yml ファイルと同じディレクトリにある setup.py ファイルを使います。 Databricks CLI では、wheelsetuptools パッケージがまだインストールされていない場合は、ユーザーが pip3 install --upgrade wheel setuptools などのコマンドを実行して既にインストールしているものと、想定されています。

また、関連するパイプライン ノートブックには、構築された Python ホイール ファイルをインストールするための %pip install コマンドを含める必要があります。 「Python ライブラリ」をご覧ください。