Używanie pliku wheel języka Python w zadaniu usługi Azure Databricks

Plik wheel języka Python to standardowy sposób tworzenia pakietów i dystrybuowania plików wymaganych do uruchomienia aplikacji w języku Python. Za pomocą zadania wheel języka Python możesz zapewnić szybką i niezawodną instalację kodu języka Python w zadaniach usługi Azure Databricks. Ten artykuł zawiera przykład tworzenia pliku wheel języka Python i zadania, które uruchamia aplikację spakowana w pliku wheel języka Python. W tym przykładzie wykonasz następujące elementy:

  • Utwórz pliki języka Python definiujące przykładową aplikację.
  • Dołącz przykładowe pliki do pliku wheel języka Python.
  • Utwórz zadanie uruchamiania pliku wheel języka Python.
  • Uruchom zadanie i wyświetl wyniki.

Przed rozpoczęciem

Aby ukończyć ten przykład, potrzebne są następujące elementy:

  • Python3

  • Język Python wheel i setuptool pakiety. Możesz użyć pip polecenia , aby zainstalować te pakiety. Możesz na przykład uruchomić następujące polecenie, aby zainstalować następujące pakiety:

    pip install wheel setuptools
    

Krok 1. Tworzenie katalogu lokalnego na potrzeby przykładu

Utwórz katalog lokalny do przechowywania przykładowego kodu i wygenerowanych artefaktów, na przykład databricks_wheel_test.

Krok 2. Tworzenie przykładowego skryptu języka Python

Poniższy przykład języka Python to prosty skrypt, który odczytuje argumenty wejściowe i wyświetla te argumenty. Skopiuj ten skrypt i zapisz go w ścieżce o nazwie my_test_code/__main__.py w katalogu utworzonym w poprzednim kroku.

"""
The entry point of the Python Wheel
"""

import sys

def main():
  # This method will print the provided arguments
  print('Hello from my func')
  print('Got arguments:')
  print(sys.argv)

if __name__ == '__main__':
  main()

Krok 3. Tworzenie pliku metadanych dla pakietu

Poniższy plik zawiera metadane opisujące pakiet. Zapisz to w ścieżce o nazwie my_test_code/__init__.py w katalogu utworzonym w kroku 1.

__version__ = "0.0.1"
__author__ = "Databricks"

Krok 4. Tworzenie pliku wheel języka Python

Konwertowanie artefaktów języka Python na plik wheel języka Python wymaga określenia metadanych pakietu, takich jak nazwa pakietu i punkty wejścia. Poniższy skrypt definiuje te metadane.

Uwaga

Zdefiniowane entry_points w tym skrycie służą do uruchamiania pakietu w przepływie pracy usługi Azure Databricks. W każdej wartości w entry_pointspliku wartość wcześniej = (w tym przykładzie run) jest nazwą punktu wejścia i służy do konfigurowania zadania koła języka Python.

  1. Zapisz ten skrypt w pliku o nazwie setup.py w katalogu głównym katalogu utworzonego w kroku 1:

    from setuptools import setup, find_packages
    
    import my_test_code
    
    setup(
      name='my_test_package',
      version=my_test_code.__version__,
      author=my_test_code.__author__,
      url='https://databricks.com',
      author_email='john.doe@databricks.com',
      description='my test wheel',
      packages=find_packages(include=['my_test_code']),
      entry_points={
        'group_1': 'run=my_test_code.__main__:main'
      },
      install_requires=[
        'setuptools'
      ]
    )
    
  2. Przejdź do katalogu utworzonego w kroku 1 i uruchom następujące polecenie, aby spakować kod do dystrybucji kół języka Python:

    python3 setup.py bdist_wheel
    

To polecenie tworzy plik wheel języka Python i zapisuje go dist/my_test_package-0.0.1-py3.none-any.whl w pliku w katalogu.

Krok 5. Tworzenie zadania usługi Azure Databricks w celu uruchomienia pliku wheel języka Python

  1. Przejdź do strony docelowej usługi Azure Databricks i wykonaj jedną z następujących czynności:
    • Na pasku bocznym kliknij pozycję Ikona zadańPrzepływy pracy, a następnie kliknij pozycję Przycisk Utwórz zadanie.
    • Na pasku bocznym kliknij pozycję Nowa ikonaNowy i wybierz z menu pozycję Zadanie .
  2. W oknie dialogowym zadania wyświetlonym na karcie Zadania zastąp ciąg Dodaj nazwę zadania... nazwą zadania, na przykład Python wheel example.
  3. W polu Nazwa zadania wprowadź nazwę zadania, na przykład python_wheel_task.
  4. W polu Typ wybierz pozycję Python Wheel.
  5. W polu Nazwa pakietu wprowadź wartość my_test_package. Nazwa pakietu to wartość przypisana do zmiennej name w skrypicie setup.py .
  6. W polu Punkt wejścia wprowadź wartość run. Punkt wejścia jest jedną z wartości określonych w entry_points kolekcji w setup.py skrycie. W tym przykładzie run jest jedynym zdefiniowanym punktem wejścia.
  7. W obszarze Klaster wybierz zgodny klaster. Zobacz Biblioteki o zakresie klastra.
  8. Kliknij pozycję Dodaj w obszarze Biblioteki zależne. W oknie dialogowym Dodawanie biblioteki zależnej z wybraną pozycją Obszar roboczy przeciągnij my_test_package-0.0.1-py3-none-any.whl plik utworzony w kroku 4 do obszaru Upuść plik w oknie dialogowym.
  9. Kliknij przycisk Dodaj.
  10. W obszarze Parametry wybierz pozycję Argumenty pozycyjne lub Argumenty słów kluczowych, aby wprowadzić klucz i wartość każdego parametru. Argumenty pozycyjne i kluczowe są przekazywane do zadania koła języka Python jako argumenty wiersza polecenia.
    • Aby wprowadzić argumenty pozycyjne, wprowadź parametry jako tablicę ciągów w formacie JSON, na przykład: ["first argument","first value","second argument","second value"].
    • Aby wprowadzić argumenty słów kluczowych, kliknij pozycję + Dodaj i wprowadź klucz i wartość. Kliknij ponownie pozycję + Dodaj , aby wprowadzić więcej argumentów.
  11. Kliknij pozycję Zapisz zadanie.

Krok 6. Uruchamianie zadania i wyświetlanie szczegółów uruchomienia zadania

Kliknij Przycisk Uruchom teraz , aby uruchomić przepływ pracy. Aby wyświetlić szczegóły przebiegu, kliknij pozycję Wyświetl przebieg w wyskakującym oknie podręcznym Wyzwalane uruchomienie lub kliknij link w kolumnie Godzina rozpoczęcia przebiegu w widoku przebiegówzadań.

Po zakończeniu przebiegu dane wyjściowe zostaną wyświetlone w panelu Dane wyjściowe , w tym argumenty przekazane do zadania.

Następne kroki

Aby dowiedzieć się więcej na temat tworzenia i uruchamiania zadań usługi Azure Databricks, zobacz Tworzenie i uruchamianie zadań usługi Azure Databricks.