Udostępnij za pośrednictwem


Opracowywanie zadania w usłudze Azure Databricks przy użyciu pakietów zasobów usługi Databricks

Pakiety zasobów usługi Databricks, znane również po prostu jako pakiety, zawierają artefakty, które chcesz wdrożyć, oraz ustawienia zasobów usługi Azure Databricks, takich jak zadania, które chcesz uruchomić, i umożliwiają programowe weryfikowanie, wdrażanie i uruchamianie. Zobacz Co to są pakiety zasobów usługi Databricks?.

W tym artykule opisano sposób tworzenia pakietu w celu programowego zarządzania zadaniem. Zobacz Planowanie i organizowanie przepływów pracy. Pakiet jest tworzony przy użyciu domyślnego szablonu pakietu zasobów usługi Databricks dla języka Python, który składa się z notesu sparowanego z definicją zadania do jego uruchomienia. Następnie należy zweryfikować, wdrożyć i uruchomić wdrożone zadanie w obszarze roboczym usługi Azure Databricks.

Napiwek

Jeśli masz istniejące zadania utworzone przy użyciu interfejsu użytkownika zadań usługi Azure Databricks Jobs lub interfejsu API, które chcesz przenieść do pakietów, musisz zdefiniować je w plikach konfiguracji pakietu. Usługa Databricks zaleca najpierw utworzenie pakietu, wykonując poniższe kroki, a następnie sprawdzenie, czy pakiet działa. Następnie możesz dodać do pakietu dodatkowe definicje zadań, notesy i inne źródła. Zobacz Dodawanie istniejącej definicji zadania do pakietu.

Wymagania

  • Interfejs wiersza polecenia usługi Databricks w wersji 0.218.0 lub nowszej. Aby sprawdzić zainstalowaną wersję interfejsu wiersza polecenia usługi Databricks, uruchom polecenie databricks -v. Aby zainstalować interfejs wiersza polecenia usługi Databricks, zobacz Instalowanie lub aktualizowanie interfejsu wiersza polecenia usługi Databricks.
  • Zdalny obszar roboczy usługi Databricks musi mieć włączone pliki obszaru roboczego. Zobacz Co to są pliki obszaru roboczego?.

Tworzenie pakietu przy użyciu szablonu projektu

Najpierw utwórz pakiet przy użyciu domyślnego szablonu języka Python pakietu zasobów usługi Databricks. Aby uzyskać więcej informacji na temat szablonów pakietów, zobacz Szablony projektów pakietu zasobów usługi Databricks.

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

Krok 1. Konfigurowanie uwierzytelniania

W tym kroku skonfigurujesz uwierzytelnianie między interfejsem wiersza polecenia usługi Databricks na komputerze deweloperskim a obszarem roboczym usługi Azure Databricks. W tym artykule założono, że chcesz użyć uwierzytelniania użytkownika do komputera (U2M) OAuth i odpowiedniego profilu konfiguracji usługi Azure Databricks o nazwie DEFAULT na potrzeby uwierzytelniania.

Uwaga

Uwierzytelnianie U2M jest odpowiednie do wypróbowanie tych kroków w czasie rzeczywistym. W przypadku w pełni zautomatyzowanych przepływów pracy usługa Databricks zaleca zamiast tego użycie uwierzytelniania maszynowego do maszyny OAuth (M2M). Zobacz instrukcje dotyczące konfigurowania uwierzytelniania M2M w temacie Uwierzytelnianie.

  1. Użyj interfejsu wiersza polecenia usługi Databricks, aby lokalnie zainicjować zarządzanie tokenami OAuth, uruchamiając następujące polecenie dla każdego docelowego obszaru roboczego.

    W poniższym poleceniu zastąp ciąg <workspace-url> adresem URL usługi Azure Databricks na obszar roboczy, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

    databricks auth login --host <workspace-url>
    
  2. Interfejs wiersza polecenia usługi Databricks monituje o zapisanie informacji wprowadzonych jako profil konfiguracji usługi Azure Databricks. Naciśnij Enter , aby zaakceptować sugerowaną nazwę profilu lub wprowadź nazwę nowego lub istniejącego profilu. Każdy istniejący profil o tej samej nazwie zostanie zastąpiony wprowadzonymi informacjami. Profile umożliwiają szybkie przełączanie kontekstu uwierzytelniania między wieloma obszarami roboczymi.

    Aby uzyskać listę wszystkich istniejących profilów, w osobnym terminalu lub wierszu polecenia użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić polecenie databricks auth profiles. Aby wyświetlić istniejące ustawienia określonego profilu, uruchom polecenie databricks auth env --profile <profile-name>.

  3. W przeglądarce internetowej wykonaj instrukcje na ekranie, aby zalogować się do obszaru roboczego usługi Azure Databricks.

  4. Aby wyświetlić bieżącą wartość tokenu OAuth profilu i zbliżający się znacznik czasu wygaśnięcia tokenu, uruchom jedno z następujących poleceń:

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

    Jeśli masz wiele profilów o tej samej --host wartości, może być konieczne określenie --host opcji i -p , aby ułatwić interfejsowi wiersza polecenia usługi Databricks znalezienie prawidłowych pasujących informacji o tokenie OAuth.

Krok 2. Inicjowanie pakietu

Zainicjuj pakiet przy użyciu domyślnego szablonu projektu pakietu języka Python.

  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 interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle init polecenie:

    databricks bundle init
    
  3. W polu Template to usepozostaw wartość default-python domyślną ciągu , naciskają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 główny jest tworzony w bieżącym katalogu roboczym.

  5. W polu Include a stub (sample) notebookwybierz i yes naciśnij Enter.

  6. W polu Include a stub (sample) DLT pipelinewybierz i no naciśnij Enter. Spowoduje to, że interfejs wiersza polecenia usługi Databricks nie zdefiniuje przykładowego potoku delta live tables w pakiecie.

  7. W polu Include a stub (sample) Python packagewybierz i no naciśnij Enter. Powoduje to, że interfejs wiersza polecenia usługi Databricks nie dodaje przykładowych plików pakietu wheel języka Python ani powiązanych instrukcji kompilacji do pakietu.

Krok 3. Eksplorowanie pakietu

Aby wyświetlić pliki wygenerowane przez szablon, przejdź do katalogu głównego nowo utworzonego pakietu. Pliki o szczególnym znaczeniu obejmują następujące elementy:

  • databricks.yml: Ten plik określa nazwę programową pakietu, zawiera odwołanie do definicji zadania i określa ustawienia docelowego obszaru roboczego.
  • resources/<project-name>_job.yml: ten plik określa ustawienia zadania, w tym domyślne zadanie notesu.
  • src/notebook.ipynb: Ten plik jest przykładowym notesem, który po uruchomieniu po prostu inicjuje RDD zawierający liczby od 1 do 10.

W przypadku dostosowywania zadań mapowania w deklaracji zadania odpowiadają ładunkowi żądania wyrażonemu w formacie YAML operacji tworzenia zadania zgodnie z opisem w dokumencie POST /api/2.1/jobs/create w dokumentacji interfejsu API REST.

Napiwek

Ustawienia nowych klastrów zadań w pakietach można definiować, łączyć i zastępować przy użyciu technik opisanych w temacie Zastępowanie ustawień klastra w pakietach zasobów usługi Databricks.

Krok 4. Weryfikowanie pliku konfiguracji pakietu projektu

W tym kroku sprawdzisz, czy konfiguracja pakietu jest prawidłowa.

  1. Z katalogu głównego użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle validate polecenie w następujący sposób:

    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.

Jeśli po tym kroku wprowadzisz jakiekolwiek zmiany w pakiecie, należy powtórzyć ten krok, aby sprawdzić, czy konfiguracja pakietu jest nadal prawidłowa.

Krok 5. Wdrażanie projektu lokalnego w zdalnym obszarze roboczym

W tym kroku wdrożysz notes lokalny w zdalnym obszarze roboczym usługi Azure Databricks i utworzysz zadanie usługi Azure Databricks w obszarze roboczym.

  1. W katalogu głównym pakietu użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle deploy polecenie w następujący sposób:

    databricks bundle deploy -t dev
    
  2. Sprawdź, czy notes lokalny został wdrożony: na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Obszar roboczy.

  3. Kliknij folder src pliki > deweloperskie > Użytkownicy><your-username>> .bundle.><project-name>> Notes powinien znajdować się w tym folderze.

  4. Sprawdź, czy zadanie zostało utworzone: na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Przepływy pracy.

  5. Na karcie Zadania kliknij pozycję [dev <your-username>] <project-name>_job.

  6. Kliknij kartę Zadania . Powinno istnieć jedno zadanie: notebook_task.

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

Krok 6. Uruchamianie wdrożonego projektu

W tym kroku uruchomisz zadanie usługi Azure Databricks w obszarze roboczym z poziomu wiersza polecenia.

  1. Z katalogu głównego użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle run polecenie w następujący sposób, zastępując <project-name> ciąg nazwą projektu z kroku 2:

    databricks bundle run -t dev <project-name>_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. Zobacz Wyświetlanie i uruchamianie zadania utworzonego za pomocą pakietu zasobów usługi Databricks

  3. W obszarze roboczym usługi Azure Databricks po pomyślnym zakończeniu zadania i wyświetl zielony pasek tytułu kliknij zadanie zadania, aby wyświetlić wyniki.

Jeśli po tym kroku wprowadzisz jakiekolwiek zmiany w pakiecie, powtórz kroki od 4 do 6, aby sprawdzić, czy konfiguracja pakietu jest nadal prawidłowa, ponownie wdrożyć projekt i uruchomić ponownie wdrożony projekt.

Krok 7. Czyszczenie

W tym kroku usuniesz wdrożony notes i zadanie z obszaru roboczego.

  1. Z katalogu głównego użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle destroy polecenie w następujący sposób:

    databricks bundle destroy -t dev
    
  2. Potwierdź żądanie usunięcia zadania: po wyświetleniu monitu o trwałe zniszczenie zasobów wpisz y i naciśnij Enter.

  3. Potwierdź żądanie usunięcia notesu: po wyświetleniu monitu o trwałe zniszczenie wcześniej wdrożonego folderu i wszystkich jego plików wpisz y i naciśnij Enter.

  4. Jeśli chcesz również usunąć pakiet z komputera dewelopera, możesz teraz usunąć katalog lokalny z kroku 2.

Dodawanie istniejącej definicji zadania do pakietu

Możesz użyć istniejącego zadania jako podstawy, aby zdefiniować zadanie w pliku konfiguracji pakietu. Aby uzyskać istniejącą definicję zadania, możesz ją ręcznie pobrać przy użyciu interfejsu użytkownika lub wygenerować ją programowo przy użyciu interfejsu wiersza polecenia usługi Databricks.

Aby uzyskać informacje o definicji zadania w pakietach, zobacz job (Zadanie).

Pobieranie istniejącej definicji zadania przy użyciu interfejsu użytkownika

Aby uzyskać reprezentację YAML istniejącej definicji zadania z poziomu interfejsu użytkownika obszaru roboczego usługi Azure Databricks:

  1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Przepływy pracy.

  2. Na karcie Zadania kliknij link Nazwa zadania.

  3. Obok przycisku Uruchom teraz kliknij kebab, a następnie kliknij przycisk Przełącz na kod (YAML).

  4. Dodaj plik YAML skopiowany do pliku pakietu databricks.yml lub utwórz plik konfiguracji zadania w resources katalogu projektu pakietu i odwołaj się do niego z pliku databricks.yml . Zobacz (/dev-tools/bundles/settings.md#resources).

  5. Pobierz i dodaj wszystkie pliki i notesy języka Python, do których odwołuje się istniejące zadanie, do źródła projektu pakietu. Zazwyczaj artefakty pakietu znajdują się w src katalogu w pakiecie.

    Napiwek

    Istniejący notes można wyeksportować z obszaru roboczego usługi Azure Databricks do .ipynb formatu, klikając pozycję Eksportuj notes IPython z > > poziomu interfejsu użytkownika notesu usługi Azure Databricks.

    Po dodaniu notesów, plików języka Python i innych artefaktów do pakietu upewnij się, że definicja zadania prawidłowo odwołuje się do nich. Na przykład w przypadku notesu o nazwie hello.ipynb , który znajduje się w src katalogu pakietu:

    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
          - task_key: hello-task
            notebook_task:
              notebook_path: ../src/hello.ipynb
    

Generowanie istniejącej definicji zadania przy użyciu interfejsu wiersza polecenia usługi Databricks

Aby programowo wygenerować konfigurację pakietu dla istniejącego zadania:

  1. Pobierz identyfikator istniejącego zadania z panelu bocznego Szczegóły zadania dla zadania w interfejsie użytkownika zadań lub użyj polecenia interfejsu wiersza polecenia databricks jobs list usługi Databricks.

  2. Uruchom polecenie interfejsu bundle generate job wiersza polecenia usługi Databricks, ustawiając identyfikator zadania:

    databricks bundle generate job --existing-job-id 6565621249
    

    To polecenie tworzy plik konfiguracji pakietu dla zadania w folderze pakietu resources i pobiera wszystkie przywołyne artefakty do src folderu.

    Napiwek

    Jeśli najpierw używasz bundle deployment bind do powiązania zasobu w pakiecie z jednym w obszarze roboczym, zasób w obszarze roboczym zostanie zaktualizowany na podstawie konfiguracji zdefiniowanej w pakiecie, do którego jest powiązany po następnym bundle deploy. Aby uzyskać informacje na bundle deployment bindtemat programu , zobacz Bind bundle resources (Powiązane zasoby pakietu).

Konfigurowanie zadania korzystającego z obliczeń bezserwerowych

W poniższych przykładach pokazano konfiguracje pakietów w celu utworzenia zadania korzystającego z bezserwerowych obliczeń.

Aby użyć bezserwerowych obliczeń do uruchomienia zadania obejmującego zadania notesu, pomiń konfigurację job_clusters z pliku konfiguracji pakietu.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job-serverless:
      name: retrieve-filter-baby-names-job-serverless
      tasks:
        - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./filter-baby-names.py

  targets:
    development:
      workspace:
        host: <workspace-url>

Aby używać bezserwerowych obliczeń do uruchamiania zadania obejmującego zadania języka Python, uwzględnij konfigurację environments .

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: serverless-python-tasks

resources:
jobs:
  serverless-python-job:
    name: serverless-job-with-python-tasks

    tasks:
      - task_key: wheel-task-1
        python_wheel_task:
          entry_point: main
          package_name: wheel_package
        environment_key: Default

    environments:
      - environment_key: Default
        spec:
          client: "1"
          dependencies:
            - workflows_authoring_toolkit==0.0.1

targets:
  development:
    workspace:
      host: <workspace-url>

Zobacz Uruchamianie zadania usługi Azure Databricks z bezserwerowymi obliczeniami dla przepływów pracy.