Delen via


Handmatig een bundel maken

In deze zelfstudie maakt u een volledig nieuwe Databricks Asset Bundle. Deze eenvoudige bundel bestaat uit twee notebooks en de definitie van een Azure Databricks-taak om deze notebooks uit te voeren. Vervolgens valideert, implementeert en voert u de taak uit in uw Azure Databricks-werkruimte. Met deze stappen automatiseert u de quickstart getiteld Uw eerste werkstroom maken met een Azure Databricks-taak.

Vereisten

Stap 1: De bundel maken

Een bundel bevat de artefacten die u wilt implementeren en de instellingen voor de resources die u wilt uitvoeren.

  1. Maak of identificeer een lege map op uw ontwikkelcomputer.
  2. Ga naar de lege map in uw terminal of open deze in uw IDE.

Tip

U kunt ook een map gebruiken die een opslagplaats bevat die is gekloond van een Git-provider. Hierdoor kunt u uw bundel beheren met extern versiebeheer en eenvoudiger samenwerken met andere ontwikkelaars en IT-professionals aan uw project.

Als u ervoor kiest om een opslagplaats voor deze demo te klonen, raadt Databricks aan dat de opslagplaats leeg is of alleen basisbestanden bevat, zoals README en .gitignore. Anders kunnen bestaande bestanden in de opslagplaats onnodig worden gesynchroniseerd met uw Azure Databricks-werkruimte.

Stap 2: Notebooks toevoegen aan het project

In deze stap voegt u twee notebooks toe aan uw project. Het eerste notitieblok krijgt een lijst met trending babynamen sinds 2007 van de openbare gegevensbronnen van het New York State Department of Health. Zie Babynamen: Trending by Name: Begin 2007 op de website van de afdeling. Het eerste notebook slaat deze gegevens vervolgens op in uw Azure Databricks Unity Catalog-volume met de naam my-volume in een schema met default de naam mainin een catalogus. In het tweede notebook worden de opgeslagen gegevens opgevraagd en worden geaggregeerde aantallen babynamen weergegeven op voornaam en geslacht voor 2014.

  1. Maak vanuit de hoofdmap van de map het eerste notebook, een bestand met de naam retrieve-baby-names.py.

  2. Voeg de volgende code toe aan het bestand 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. Maak het tweede notitieblok, een bestand met de naam filter-baby-names.py, in dezelfde map.

  4. Voeg de volgende code toe aan het bestand 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")))
    

Stap 3: Een configuratieschemabestand voor bundels toevoegen aan het project

Als u een IDE gebruikt, zoals Visual Studio Code, PyCharm Professional of IntelliJ IDEA Ultimate die YAML-bestanden en JSON-schemabestanden ondersteunt, kunt u uw IDE gebruiken om niet alleen het bundelconfiguratieschemabestand te maken, maar om de syntaxis en opmaak van het bundelconfiguratiebestand van uw project te controleren. Hoewel het bundelconfiguratiebestand dat u later in stap 5 maakt, yamL is gebaseerd, is het configuratieschemabestand voor bundels in deze stap gebaseerd op JSON.

Visual Studio Code

  1. Voeg ondersteuning voor YAML-taalservers toe aan Visual Studio Code, bijvoorbeeld door de YAML-extensie te installeren vanuit Visual Studio Code Marketplace.

  2. Genereer het JSON-schemabestand van de Databricks Asset Bundle-configuratie met behulp van de Databricks CLI om de bundle schema opdracht uit te voeren en de uitvoer om te leiden naar een JSON-bestand. Genereer bijvoorbeeld als volgt een bestand met de naam bundle_config_schema.json in de huidige map:

    databricks bundle schema > bundle_config_schema.json
    
  3. In stap 5 voegt u de volgende opmerking toe aan het begin van uw bundelconfiguratiebestand, dat uw bundelconfiguratiebestand koppelt aan het opgegeven JSON-schemabestand:

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

    Notitie

    Als het JSON-schemabestand van uw Databricks Asset Bundle-configuratie zich in een ander pad bevindt, vervangt bundle_config_schema.json u in de voorgaande opmerking het volledige pad naar uw schemabestand.

PyCharm Professional

  1. Genereer het JSON-schemabestand van de Databricks Asset Bundle-configuratie met behulp van de Databricks CLI om de bundle schema opdracht uit te voeren en de uitvoer om te leiden naar een JSON-bestand. Genereer bijvoorbeeld als volgt een bestand met de naam bundle_config_schema.json in de huidige map:

    databricks bundle schema > bundle_config_schema.json
    
  2. Configureer PyCharm om het JSON-schemabestand voor de bundelconfiguratie te herkennen en voltooi vervolgens de toewijzing van het JSON-schema door de instructies in Een aangepast JSON-schema configureren te volgen.

  3. In stap 5 gebruikt u PyCharm om een bundelconfiguratiebestand te maken of te openen. Volgens de conventie heeft dit bestand de naam databricks.yml.

IntelliJ IDEA Ultimate

  1. Genereer het JSON-schemabestand van de Databricks Asset Bundle-configuratie met behulp van de Databricks CLI om de bundle schema opdracht uit te voeren en de uitvoer om te leiden naar een JSON-bestand. Genereer bijvoorbeeld als volgt een bestand met de naam bundle_config_schema.json in de huidige map:

    databricks bundle schema > bundle_config_schema.json
    
  2. Configureer IntelliJ IDEA om het JSON-schemabestand voor bundelconfiguratie te herkennen en voltooi vervolgens de toewijzing van het JSON-schema door de instructies in Een aangepast JSON-schema configureren te volgen.

  3. In stap 5 gebruikt u IntelliJ IDEA om een bundelconfiguratiebestand te maken of te openen. Volgens de conventie heeft dit bestand de naam databricks.yml.

Stap 4: Verificatie instellen

In deze stap stelt u verificatie in tussen de Databricks CLI op uw ontwikkelcomputer en uw Azure Databricks-werkruimte. In dit artikel wordt ervan uitgegaan dat u OAuth-gebruikers-naar-machine-verificatie (U2M) en een bijbehorend Azure Databricks-configuratieprofiel DEFAULT voor verificatie wilt gebruiken.

Notitie

U2M-verificatie is geschikt voor het uitvoeren van deze stappen in realtime. Voor volledig geautomatiseerde werkstromen raadt Databricks u aan in plaats daarvan OAuth-verificatie van machine-naar-machine (M2M) te gebruiken. Zie de installatie-instructies voor M2M-verificatie in Verificatie.

  1. Gebruik de Databricks CLI om OAuth-tokenbeheer lokaal te starten door de volgende opdracht uit te voeren voor elke doelwerkruimte.

    Vervang in de volgende opdracht bijvoorbeeld https://adb-1234567890123456.7.azuredatabricks.netdoor <workspace-url> de URL van uw Azure Databricks per werkruimte.

    databricks auth login --host <workspace-url>
    
  2. De Databricks CLI vraagt u om de gegevens op te slaan die u hebt ingevoerd als een Azure Databricks-configuratieprofiel. Druk Enter om de voorgestelde profielnaam te accepteren of voer de naam van een nieuw of bestaand profiel in. Elk bestaand profiel met dezelfde naam wordt overschreven met de gegevens die u hebt ingevoerd. U kunt profielen gebruiken om snel uw verificatiecontext over te schakelen tussen meerdere werkruimten.

    Als u een lijst met bestaande profielen wilt ophalen, gebruikt u in een afzonderlijke terminal of opdrachtprompt de Databricks CLI om de opdracht databricks auth profilesuit te voeren. Als u de bestaande instellingen van een specifiek profiel wilt weergeven, voert u de opdracht databricks auth env --profile <profile-name>uit.

  3. Voltooi in uw webbrowser de instructies op het scherm om u aan te melden bij uw Azure Databricks-werkruimte.

  4. Voer een van de volgende opdrachten uit om de huidige OAuth-tokenwaarde van een profiel en de geplande verlooptijdstempel van het token weer te geven:

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

    Als u meerdere profielen met dezelfde --host waarde hebt, moet u mogelijk de --host en -p opties opgeven om de Databricks CLI te helpen de juiste overeenkomende OAuth-tokengegevens te vinden.

Stap 5: Een bundelconfiguratiebestand toevoegen aan het project

In deze stap definieert u hoe u de twee notebooks implementeert en uitvoert. Voor deze demo wilt u een Azure Databricks-taak gebruiken om het eerste notebook en vervolgens het tweede notebook uit te voeren. Omdat het eerste notitieblok de gegevens opslaat en het tweede notebook de opgeslagen gegevens opvraagt, wilt u dat het eerste notitieblok wordt uitgevoerd voordat het tweede notitieblok wordt gestart. U modelleer deze doelstellingen in een bundelconfiguratiebestand in uw project.

  1. Maak vanuit de hoofdmap van de map het bundelconfiguratiebestand, een bestand met de naam databricks.yml.
  2. Voeg de volgende code toe aan het databricks.yml bestand, waarbij u bijvoorbeeld https://adb-1234567890123456.7.azuredatabricks.netde URL per werkruimte vervangt<workspace-url>. Deze URL moet overeenkomen met de URL in uw .databrickscfg bestand:

Tip

De eerste regel, te beginnen met # yaml-language-server, is alleen vereist als uw IDE deze ondersteunt. Zie stap 3 eerder voor meer informatie.

# 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>

Voor het aanpassen van taken komen de toewijzingen in een taakdeclaratie overeen met de nettolading van de aanvraag, uitgedrukt in YAML-indeling, van de taakbewerking maken zoals beschreven in POST /api/2.1/jobs/create in de REST API-verwijzing.

Tip

U kunt de instellingen voor nieuwe taakclusters in bundels definiëren, combineren en overschrijven met behulp van de technieken die worden beschreven in Clusterinstellingen overschrijven in Databricks Asset Bundles.

Stap 6: Het configuratiebestand voor de bundel van het project valideren

In deze stap controleert u of de bundelconfiguratie geldig is.

  1. Gebruik de Databricks CLI om de bundle validate opdracht als volgt uit te voeren:

    databricks bundle validate
    
  2. Als er een samenvatting van de bundelconfiguratie wordt geretourneerd, is de validatie voltooid. Als er fouten worden geretourneerd, lost u de fouten op en herhaalt u deze stap.

Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u deze stap herhalen om te controleren of uw bundelconfiguratie nog geldig is.

Stap 7: Het lokale project implementeren in de externe werkruimte

In deze stap implementeert u de twee lokale notebooks in uw externe Azure Databricks-werkruimte en maakt u de Azure Databricks-taak in uw werkruimte.

  1. Gebruik de Databricks CLI om de bundle deploy opdracht als volgt uit te voeren:

    databricks bundle deploy -t development
    
  2. Controleer of de twee lokale notebooks zijn geïmplementeerd: klik in de zijbalk van uw Azure Databricks-werkruimte op Werkruimte.

  3. Klik in de map Gebruikers><your-username>> .bundle > baby-names > development > files. De twee notitieblokken moeten zich in deze map bevinden.

  4. Controleer of de taak is gemaakt: klik in de zijbalk van uw Azure Databricks-werkruimte op Werkstromen.

  5. Klik op het tabblad Taken op retrieve-filter-baby-names-job.

  6. Klik op het tabblad Taken . Er moeten twee taken zijn: retrieve-baby-names-task en filter-baby-names-task.

Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u stap 6-7 herhalen om te controleren of uw bundelconfiguratie nog geldig is en vervolgens het project opnieuw implementeert.

Stap 8: Het geïmplementeerde project uitvoeren

In deze stap voert u de Azure Databricks-taak uit in uw werkruimte.

  1. Gebruik de Databricks CLI om de bundle run opdracht als volgt uit te voeren:

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. Kopieer de waarde die Run URL in uw terminal wordt weergegeven en plak deze waarde in uw webbrowser om uw Azure Databricks-werkruimte te openen.

  3. Klik in uw Azure Databricks-werkruimte, nadat de twee taken zijn voltooid en groene titelbalken worden weergegeven, op de taak filter-baby-names-task om de queryresultaten te bekijken.

Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u stap 6-8 herhalen om te controleren of uw bundelconfiguratie nog geldig is, het project opnieuw implementeert en het opnieuw geïmplementeerde project uitvoert.

Stap 9: Opschonen

In deze stap verwijdert u de twee geïmplementeerde notebooks en de taak uit uw werkruimte.

  1. Gebruik de Databricks CLI om de bundle destroy opdracht als volgt uit te voeren:

    databricks bundle destroy
    
  2. Bevestig de aanvraag voor het verwijderen van de taak: wanneer u wordt gevraagd om resources permanent te vernietigen, typt y en drukt u op Enter.

  3. Bevestig de verwijderingsaanvraag voor notitieblokken: wanneer u wordt gevraagd om de eerder geïmplementeerde map en alle bestanden permanent te vernietigen, typt y en drukt u op Enter.

Als u de bundle destroy opdracht uitvoert, worden alleen de geïmplementeerde taak en de map met de twee geïmplementeerde notebooks verwijderd. Met deze opdracht worden geen bijwerkingen verwijderd, zoals het babynames.csv bestand dat het eerste notitieblok heeft gemaakt. Ga als volgt te werk om het babybnames.csv bestand te verwijderen:

  1. Klik in de zijbalk van uw Azure Databricks-werkruimte op Catalogus.
  2. Klik op DBFS bladeren.
  3. Klik op de map FileStore .
  4. Klik op de vervolgkeuzepijl naast babynames.csv en klik op Verwijderen.
  5. Als u de bundel ook van uw ontwikkelcomputer wilt verwijderen, kunt u nu de lokale map uit stap 1 verwijderen.