Udostępnij przez


Budowanie pliku wheel dla Pythona przy użyciu Databricks Asset Bundles

Na tej stronie opisano sposób budowania, wdrażania i uruchamiania pliku wheel języka Python przy użyciu Databricks Asset Bundles. Zobacz Czym są pakiety zasobów Databricks?.

Przykładowa konfiguracja, która kompiluje plik JAR i przekazuje go do Unity Catalog, zobacz pakiet, który przekazuje plik JAR do Unity Catalog.

Requirements

Tworzenie pakietu przy użyciu szablonu

Utwórz pakiet przy użyciu domyślnego szablonu pakietu zasobów usługi Databricks dla języka Python. Ten pakiet składa się z plików do kompilacji w pliku wheel języka Python oraz definicji zadania usługi Azure Databricks w celu skompilowania tego pliku wheel języka Python. Następnie należy zweryfikować, wdrożyć i utworzyć plik wheel języka Python z wdrożonych plików, korzystając z zadania tworzenia koła języka Python w obszarze roboczym usługi Azure Databricks.

Jeśli chcesz utworzyć pakiet od podstaw, zobacz Ręczne tworzenie pakietu.

Krok 1. Tworzenie pakietu

Pakiet zawiera zasoby, które chcesz wdrożyć, oraz ustawienia dla przepływów pracy, które chcesz uruchomić.

  1. Użyj terminalu lub wiersza polecenia, aby przełączyć się do katalogu na lokalnej maszynie deweloperskiej, która będzie zawierać wygenerowany pakiet szablonu.

  2. Użyj wersji Databricks CLI, aby uruchomić polecenie bundle init.

    databricks bundle init
    
  3. W polu Template to use pozostaw domyślną wartość default-python, przyciskając Enter.

  4. W polu Unique name for this projectpozostaw wartość my_projectdomyślną , lub wpisz inną wartość, a następnie naciśnij Enter. Określa nazwę katalogu głównego dla tego pakietu. Ten katalog nadrzędny jest tworzony w bieżącym katalogu roboczym.

  5. W Include a job that runs a notebook wybierz no i naciśnij Enter. Instrukcja ta powoduje, że interfejs wiersza poleceń Databricks nie dodaje przykładowego notesu do pakietu.

  6. W Include an ETL pipeline wybierz no i naciśnij Enter. Powoduje to, że interfejs wiersza polecenia usługi Databricks nie definiuje przykładowego potoku w pakiecie.

  7. W polu Include a stub (sample) Python package pozostaw domyślną wartość yes, przyciskając Enter. To instruuje interfejs wiersza polecenia Databricks, aby dodać przykładowe pliki pakietu wheel języka Python i powiązane instrukcje kompilacji do pakietu.

  8. W Use serverless wybierz yes i naciśnij Enter. Spowoduje to, że interfejs wiersza polecenia usługi Databricks skonfiguruje pakiet do uruchamiania na bezserwerowych obliczeniach.

  9. W polu Default catalog for any tables created by this project [hive_metastore] wprowadź nazwę istniejącego katalogu Unity Catalog.

  10. W polu Use a personal schema for each user working on this project.wybierz pozycję yes.

Krok 2. Eksplorowanie pakietu

Aby wyświetlić pliki wygenerowane przez szablon, przejdź do katalogu głównego nowo utworzonego pakietu i otwórz ten katalog przy użyciu preferowanego środowiska IDE. Pliki o szczególnym znaczeniu obejmują następujące elementy:

  • databricks.yml: Ten plik określa nazwę pakietu, zawiera odwołania do plików pakietu, określa whl ustawienia kompilacji, definiuje zmienne katalogu i schematu oraz określa ustawienia docelowych obszarów roboczych.
  • resources/sample_job.job.yml: ten plik określa ustawienia zadania koła języka Python. Aby uzyskać informacje o ustawieniach zadania, zobacz job.
  • src/: Ten folder zawiera pliki używane przez zadanie wheel języka Python do kompilowania pliku wheel języka Python.
  • tests/: ten folder zawiera przykładowe testy jednostkowe.
  • README.md: Ten plik zawiera dodatkowe informacje na temat rozpoczynania pracy i korzystania z tego szablonu pakietu.

Note

Jeśli chcesz zainstalować plik wheel języka Python w klastrze korzystającym z wersji Databricks Runtime 12.2 LTS lub starszej, musisz dodać następujące mapowanie najwyższego poziomu do pliku databricks.yml:

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

Krok 3. Weryfikowanie konfiguracji pakietu

Teraz sprawdź, czy konfiguracja pakietu jest prawidłowa.

  1. Z katalogu głównego użyj Databricks CLI, aby uruchomić polecenie bundle validate.

    databricks bundle validate
    
  2. Jeśli zostanie zwrócone podsumowanie konfiguracji pakietu, walidacja zakończyła się pomyślnie. Jeśli zostaną zwrócone jakiekolwiek błędy, napraw błędy, a następnie powtórz ten krok.

Krok 4. Wdrażanie pakietu w zdalnym obszarze roboczym

Następnie wdróż pakiet w zdalnym obszarze roboczym usługi Azure Databricks. Spowoduje to skompilowanie pliku wheel języka Python. Sprawdź, czy zadanie usługi Azure Databricks zostało utworzone w obszarze roboczym.

  1. W katalogu głównym pakietu użyj CLI Databricks do uruchomienia polecenia bundle deploy.

    databricks bundle deploy --target dev
    
  2. Upewnij się, że lokalnie zbudowany plik wheel dla Python został wdrożony:

    1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Obszar roboczy.
    2. Kliknij następujący folder: Obszar roboczy > Użytkownicy ><your-username>> .bundle ><project-name>> deweloperskie artefakty > .internal >><whl-file-name>.whl.

    Plik wheel języka Python powinien znajdować się w tym folderze.

  3. Sprawdź, czy zadanie zostało utworzone:

    1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Zadania i potoki.
    2. Opcjonalnie wybierz filtry Zadania i Należące do mnie .
    3. Kliknij [dev <your-username>] sample_job.
    4. Kliknij kartę Zadania. Powinna być jedna python_wheel_task.

Jeśli po tym kroku wprowadzisz jakiekolwiek zmiany w pakiecie, powtórz kroki od 3 do 4, aby sprawdzić, czy konfiguracja pakietu jest nadal prawidłowa, a następnie ponownie wdróż projekt.

Krok 5. Uruchamianie wdrożonego projektu

Teraz zainicjuj uruchomienie zadania Azure Databricks w swoim obszarze roboczym.

  1. Z katalogu głównego użyj Databricks CLI, aby uruchomić polecenie bundle run.

    databricks bundle run --target dev sample_job
    
  2. Skopiuj wartość Run URL wyświetlaną w terminalu i wklej tę wartość w przeglądarce internetowej, aby otworzyć obszar roboczy usługi Azure Databricks.

  3. W przestrzeni roboczej usługi Azure Databricks, po pomyślnym zakończeniu zadania i pojawieniu się zielonego paska narzędzi, kliknij zadanie, aby zobaczyć wyniki.

Buduj plik whl przy użyciu Poetry lub setuptools

W przypadku użycia szablonu default-python z databricks bundle init, tworzony jest pakiet, który pokazuje, jak skonfigurować pakiet kompilujący koło Python przy użyciu uv oraz pyproject.toml. Możesz jednak użyć poezji lub setuptools zamiast tego utworzyć koło.

Zainstaluj Poetry lub setuptools

  1. Zainstaluj Poetry lub setuptools:

    Poetry

    • Zainstaluj program Poezja w wersji 1.6 lub nowszej, jeśli nie został jeszcze zainstalowany. Aby sprawdzić zainstalowaną wersję poezji, uruchom polecenie poetry -V lub poetry --version.
    • Upewnij się, że masz zainstalowany język Python w wersji 3.10 lub nowszej. Aby sprawdzić wersję języka Python, uruchom polecenie python -V lub python --version.

    Setuptools

    Zainstaluj pakiety wheel i setuptools, jeśli nie zostały jeszcze zainstalowane, uruchamiając następujące polecenie:

    pip3 install --upgrade wheel setuptools
    
  2. Jeśli zamierzasz przechowywać ten pakiet za pomocą dostawcy Git, dodaj .gitignore plik w katalogu głównym projektu i dodaj następujące wpisy do tego pliku:

    Poetry

    .databricks
    dist
    

    Setuptools

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

Dodawanie plików kompilacji

  1. W katalogu głównym pakietu utwórz następujące foldery i pliki, w zależności od tego, czy używasz Poetry czy setuptools do tworzenia plików wheel języka Python.

    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. Dodaj następujący kod do pliku pyproject.toml lub 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"
    
    • Zastąp my-author-name nazwą głównego kontaktu w organizacji.
    • Zastąp my-author-name>@<my-organization głównym adresem e-mail kontaktowym organizacji.
    • Zastąp <my-package-description> opisem wyświetlania dla pliku wheel w języku 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"
      ]
    )
    
    • Zastąp https://<my-url> ciąg adresem URL organizacji.
    • Zastąp <my-author-name> nazwą głównego kontaktu w organizacji.
    • Zastąp <my-author-name>@<my-organization> głównym adresem e-mail kontaktowym organizacji.
    • Zastąp <my-package-description> opisem wyświetlania dla pliku wheel w języku Python.

Dodaj konfigurację pakietu artefaktów

  1. Dodaj konfigurację mapowania artifacts do swojego projektu databricks.yml, aby wygenerować artefakt whl.

    Poetry

    Ta konfiguracja uruchamia polecenie poetry build i wskazuje, że ścieżka do pliku pyproject.toml znajduje się w tym samym katalogu co plik databricks.yml.

    Note

    Jeśli masz już utworzony plik wheel języka Python i chcesz go wdrożyć, zmodyfikuj następujący plik konfiguracji pakietu, pomijając artifacts mapowanie. CLI Databricks zakłada, że plik wheel Pythona jest już zbudowany i automatycznie wdroży pliki określone we wpisach tablicy librarieswhl.

    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

    Ta konfiguracja uruchamia polecenie setuptools i wskazuje, że ścieżka do pliku setup.py znajduje się w tym samym katalogu co plik 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>