Ręczne tworzenie pakietu

W tym samouczku utworzysz pakiet zasobów usługi Databricks od podstaw. Ten prosty pakiet składa się z dwóch notesów i definicji zadania usługi Azure Databricks do uruchamiania tych notesów. Następnie należy zweryfikować, wdrożyć i uruchomić zadanie w obszarze roboczym usługi Azure Databricks. Te kroki umożliwiają zautomatyzowanie przewodnika Szybki start zatytułowanego Tworzenie pierwszego przepływu pracy za pomocą zadania usługi Azure Databricks.

Wymagania

Krok 1. Tworzenie pakietu

Pakiet zawiera artefakty, które chcesz wdrożyć, oraz ustawienia zasobów, które chcesz uruchomić.

  1. Utwórz lub zidentyfikuj pusty katalog na maszynie dewelopera.
  2. Przejdź do pustego katalogu w terminalu lub otwórz go w środowisku IDE.

Napiwek

Możesz również użyć katalogu zawierającego repozytorium sklonowane z dostawcy usługi Git. Dzięki temu można zarządzać pakietem za pomocą zewnętrznej kontroli wersji i łatwiej współpracować z innymi deweloperami i specjalistami IT w projekcie.

Jeśli zdecydujesz się sklonować repozytorium na potrzeby tego pokazu, usługa Databricks zaleca, aby repozytorium było puste lub zawierało tylko podstawowe pliki, takie jak README i .gitignore. W przeciwnym razie wszystkie istniejące pliki w repozytorium mogą być niepotrzebnie synchronizowane z obszarem roboczym usługi Azure Databricks.

Krok 2. Dodawanie notesów do projektu

W tym kroku do projektu zostaną dodane dwa notesy. Pierwszy notes pobiera listę popularnych nazw dzieci od 2007 roku z publicznych źródeł danych Departamentu Zdrowia w Nowym Jorku. Zobacz Baby Names: Trending by Name: Beginning 2007 (Popularne według nazwy: początek 2007 ) na stronie internetowej działu. Następnie pierwszy notes zapisuje te dane w woluminie wykazu aparatu Unity usługi Azure Databricks o nazwie my-volume w schemacie o nazwie w katalogu o nazwie default main. Drugi notes wysyła zapytanie do zapisanych danych i wyświetla zagregowane liczby nazwisk dziecka według imienia i płci w 2014 roku.

  1. W katalogu głównym utwórz pierwszy notes o nazwie retrieve-baby-names.py.

  2. Dodaj następujący kod do pliku retrieve-baby-names.py:

    # Databricks notebook source
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    
  3. Utwórz drugi notes o nazwie filter-baby-names.py, w tym samym katalogu.

  4. Dodaj następujący kod do pliku filter-baby-names.py:

    # Databricks notebook source
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

Krok 3. Dodawanie pliku schematu konfiguracji pakietu do projektu

Jeśli używasz środowiska IDE, takiego jak Visual Studio Code, PyCharm Professional lub IntelliJ IDEA Ultimate, które obsługuje pliki YAML i pliki schematu JSON, możesz użyć środowiska IDE, aby nie tylko utworzyć plik schematu konfiguracji pakietu, ale także sprawdzić składnię i formatowanie pliku konfiguracji pakietu projektu. Chociaż plik konfiguracji pakietu utworzony w dalszej części kroku jest oparty na języku YAML, plik schematu konfiguracji pakietu w tym kroku jest oparty na formacie JSON.

Visual Studio Code

  1. Dodaj obsługę serwera języka YAML do programu Visual Studio Code, na przykład przez zainstalowanie rozszerzenia YAML z witryny Visual Studio Code Marketplace.

  2. Wygeneruj plik schematu JSON konfiguracji pakietu zasobów usługi Databricks przy użyciu interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle schema polecenie i przekierować dane wyjściowe do pliku JSON. Na przykład wygeneruj plik o nazwie bundle_config_schema.json w bieżącym katalogu w następujący sposób:

    databricks bundle schema > bundle_config_schema.json
    
  3. W kroku 5 dodasz następujący komentarz na początku pliku konfiguracji pakietu, który kojarzy plik konfiguracji pakietu z określonym plikiem schematu JSON:

    # yaml-language-server: $schema=bundle_config_schema.json
    

    Uwaga

    W poprzednim komentarzu, jeśli plik schematu JSON konfiguracji pakietu zasobów usługi Databricks znajduje się w innej ścieżce, zastąp bundle_config_schema.json pełną ścieżką do pliku schematu.

PyCharm Professional

  1. Wygeneruj plik schematu JSON konfiguracji pakietu zasobów usługi Databricks przy użyciu interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle schema polecenie i przekierować dane wyjściowe do pliku JSON. Na przykład wygeneruj plik o nazwie bundle_config_schema.json w bieżącym katalogu w następujący sposób:

    databricks bundle schema > bundle_config_schema.json
    
  2. Skonfiguruj narzędzie PyCharm do rozpoznawania pliku schematu JSON konfiguracji pakietu, a następnie ukończ mapowanie schematu JSON, postępując zgodnie z instrukcjami w temacie Konfigurowanie niestandardowego schematu JSON.

  3. W kroku 5 użyjesz narzędzia PyCharm do utworzenia lub otwarcia pliku konfiguracji pakietu. Zgodnie z konwencją ten plik ma nazwę databricks.yml.

IntelliJ IDEA Ultimate

  1. Wygeneruj plik schematu JSON konfiguracji pakietu zasobów usługi Databricks przy użyciu interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle schema polecenie i przekierować dane wyjściowe do pliku JSON. Na przykład wygeneruj plik o nazwie bundle_config_schema.json w bieżącym katalogu w następujący sposób:

    databricks bundle schema > bundle_config_schema.json
    
  2. Skonfiguruj środowisko IntelliJ IDEA do rozpoznawania pliku schematu JSON konfiguracji pakietu, a następnie ukończ mapowanie schematu JSON, postępując zgodnie z instrukcjami w temacie Konfigurowanie niestandardowego schematu JSON.

  3. W kroku 5 użyjesz środowiska IntelliJ IDEA do utworzenia lub otwarcia pliku konfiguracji pakietu. Zgodnie z konwencją ten plik ma nazwę databricks.yml.

Krok 4. 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 5. Dodawanie pliku konfiguracji pakietu do projektu

W tym kroku zdefiniujesz sposób wdrażania i uruchamiania dwóch notesów. Na potrzeby tego pokazu chcesz użyć zadania usługi Azure Databricks do uruchomienia pierwszego notesu, a następnie drugiego notesu. Ponieważ pierwszy notes zapisuje dane, a drugi notes wysyła zapytanie do zapisanych danych, chcesz, aby pierwszy notes zakończył działanie przed uruchomieniem drugiego notesu. Te cele modelujesz w pliku konfiguracji pakietu w projekcie.

  1. W katalogu głównym utwórz plik konfiguracji pakietu o nazwie databricks.yml.
  2. Dodaj następujący kod do databricks.yml pliku, zastępując <workspace-url> ciąg adresem URL obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net. Ten adres URL musi być zgodny z adresem w .databrickscfg pliku:

Napiwek

Pierwszy wiersz, rozpoczynający się od # yaml-language-server, jest wymagany tylko wtedy, gdy środowisko IDE go obsługuje. Aby uzyskać szczegółowe informacje, zobacz Krok 3 wcześniej.

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

resources:
  jobs:
    retrieve-filter-baby-names-job:
      name: retrieve-filter-baby-names-job
      job_clusters:
        - job_cluster_key: common-cluster
          new_cluster:
            spark_version: 12.2.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1
      tasks:
        - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./filter-baby-names.py

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

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 6. Weryfikowanie pliku konfiguracji pakietu projektu

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

  1. 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 7. Wdrażanie projektu lokalnego w zdalnym obszarze roboczym

W tym kroku wdrożysz dwa lokalne notesy w zdalnym obszarze roboczym usługi Azure Databricks i utworzysz zadanie usługi Azure Databricks w obszarze roboczym.

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

    databricks bundle deploy -t development
    
  2. Sprawdź, czy wdrożono dwa lokalne notesy: na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Obszar roboczy.

  3. Kliknij folder Pliki programistyczne Users<your-username>> >.bundle .bundle > baby-names.> > Dwa notesy powinny 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ę retrieve-filter-baby-names-job.

  6. Kliknij kartę Zadania . Powinny istnieć dwa zadania: retrieve-baby-names-task i filter-baby-names-task.

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

Krok 8. Uruchamianie wdrożonego projektu

W tym kroku uruchomisz zadanie usługi Azure Databricks w obszarze roboczym.

  1. Użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić bundle run polecenie w następujący sposób:

    databricks bundle run -t development retrieve-filter-baby-names-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 obszarze roboczym usługi Azure Databricks po pomyślnym zakończeniu dwóch zadań i wyświetl zielone paski tytułu kliknij zadanie filter-baby-names-task , aby wyświetlić wyniki zapytania.

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

Krok 9. Czyszczenie

W tym kroku usuniesz dwa wdrożone notesy i zadanie z obszaru roboczego.

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

    databricks bundle destroy
    
  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 notesów: po wyświetleniu monitu o trwałe zniszczenie wcześniej wdrożonego folderu i wszystkich jego plików wpisz y i naciśnij Enter.

bundle destroy Uruchomienie polecenia powoduje usunięcie tylko wdrożonego zadania i folderu zawierającego dwa wdrożone notesy. To polecenie nie usuwa żadnych skutków ubocznych, takich jak babynames.csv plik utworzony przez pierwszy notes. Aby usunąć babybnames.csv plik, wykonaj następujące czynności:

  1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Wykaz.
  2. Kliknij pozycję Przeglądaj system plików DBFS.
  3. Kliknij folder FileStore.
  4. Kliknij strzałkę listy rozwijanej obok babynames.csv, a następnie kliknij przycisk Usuń.
  5. Jeśli chcesz również usunąć pakiet z komputera dewelopera, możesz teraz usunąć katalog lokalny z kroku 1.