Delen via


Aanbevolen procedures voor software-engineering voor notebooks

Dit artikel bevat een praktische procedure die laat zien hoe u aanbevolen procedures voor software-engineering kunt toepassen op uw Azure Databricks-notebooks, waaronder versiebeheer, code delen, testen en optioneel continue integratie en continue levering of implementatie (CI/CD).

In deze handleiding gaat u dit doen:

  • Voeg notebooks toe aan Azure Databricks Git-mappen voor versiebeheer.
  • Extraheer delen van code uit een van de notebooks in een gedeelde module.
  • Test de gedeelde code.
  • Voer de notebooks uit vanuit een Azure Databricks-taak.
  • Pas eventueel CI/CD toe op de gedeelde code.

Vereisten

Als u deze rondleiding wilt voltooien, moet u de volgende middelen opgeven:

  • Een externe opslagplaats met een Git-provider die Databricks ondersteunt. In deze artikelhandleiding wordt GitHub gebruikt. In dit scenario wordt ervan uitgegaan dat u een GitHub-opslagplaats hebt met de naam best-notebooks Beschikbaar. (U kunt uw opslagplaats een andere naam geven. Als u dit doet, vervang best-notebooks door de naam van uw opslagplaats in deze handleiding.) Maak een GitHub-opslagplaats als u er nog geen hebt.

    Notitie

    Als u een nieuwe opslagplaats maakt, moet u de opslagplaats initialiseren met ten minste één bestand, bijvoorbeeld een README bestand.

  • Een Azure Databricks-werkruimte. Maak een werkruimte als u er nog geen hebt.

  • Een Azure Databricks-cluster voor alle doeleinden in de werkruimte. Als u notebooks tijdens de ontwerpfase wilt uitvoeren, koppelt u de notebooks aan een actief cluster voor alle doeleinden. In een later stadium maakt deze procedure gebruik van een Azure Databricks-taak om het uitvoeren van de notebooks op dit cluster te automatiseren. (U kunt ook taken uitvoeren op taakclusters die alleen bestaan voor de levensduur van de taken.) Maak een cluster voor alle doeleinden als u er nog geen hebt.

Stap 1: Databricks Git-mappen instellen

In deze stap verbindt u uw bestaande GitHub-opslagplaats met Azure Databricks Git-mappen in uw bestaande Azure Databricks-werkruimte.

Als u uw werkruimte wilt inschakelen om verbinding te maken met uw GitHub-opslagplaats, moet u eerst uw werkruimte met uw GitHub-referenties opgeven als u dit nog niet hebt gedaan.

Stap 1.1: Geef uw GitHub-referenties op

  1. Klik op uw gebruikersnaam in de rechterbovenhoek van de werkruimte en klik vervolgens op Instellingen in de vervolgkeuzelijst.
  2. Klik in de zijbalk Instellingen onder Gebruiker op Gekoppelde accounts.
  3. Onder Git-integratie, selecteer voor Git-providerde optie GitHub.
  4. Klik op Persoonlijk toegangstoken.
  5. Voer uw GitHub-gebruikersnaam in voor de gebruikersnaam of het e-mailadres van de Git-provider.
  6. Voer voor Token uw persoonlijke GitHub-toegangstoken (klassiek) in. Dit persoonlijke toegangstoken (klassiek) moet de repository en werkstroomrechten hebben.
  7. Klik op Opslaan.

Stap 1.2: Verbinding maken met uw GitHub-opslagplaats

  1. Klik in de zijbalk van de werkruimte op Werkruimte.
  2. Vouw in de Werkruimte browser de Werkruimte > Gebruikers uit.
  3. Klik met de rechtermuisknop op je gebruikersnaammap en klik vervolgens op Aanmaken > Git-map.
  4. In het dialoogvenster Git-map maken:
    1. Voer voor de URL van de Git-opslagplaats de GitHub-kloon in met HTTPS-URL voor uw GitHub-opslagplaats. In dit artikel wordt ervan uitgegaan dat uw URL eindigt op best-notebooks.gitbijvoorbeeld https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Selecteer GitHub-voor Git-provider.
    3. Laat Git-mapnaam ingesteld op de naam van uw opslagplaats, bijvoorbeeld best-notebooks.
    4. Klik op Maak Git-map.

Stap 2: Het notebook importeren en uitvoeren

In deze stap importeert u een bestaand extern notitieblok in uw opslagplaats. U kunt uw eigen notitieblokken maken voor deze handleiding, maar om het proces te versnellen, hebben we ze hier voor u beschikbaar.

Stap 2.1: Een branch maken in de repository

In deze substap maakt u een tak met de naam eda in uw repository. Met deze branch kunt u onafhankelijk van de main branch van uw opslagplaats werken aan bestanden en code, wat een best practice is voor de software-engineering. (U kunt uw tak een andere naam geven.)

Notitie

In sommige opslagplaatsen kan de main branch in plaats daarvan master heten. Als dat zo is, vervang main door master in deze procedure.

Aanbeveling

Als u niet bekend bent met het werken in Git-vertakkingen, raadpleegt u Git-vertakkingen - Vertakkingen in een Notendop op de Git-website.

  1. De Git-map uit stap 1.2 moet zijn geopend. Als dat niet het geval is, vouw in de Werkruimte zijbalk Werkruimte > Gebruikers uit, vouw de map met uw gebruikersnaam uit en klik op uw Git-map.

  2. Klik naast de mapnaam onder de breadcrumbs van de werkruimtenavigatie op de knop voor de hoofdtak van Git.

  3. Klik in het Dialoogvenster Best-notebooks op de knop Vertakking Maken.

    Notitie

    Als uw repository een andere naam heeft dan best-notebooks, is de titel van dit dialoogvenster anders, hier en in deze stapsgewijze handleiding.

  4. Voer in edaen klik op Maken.

  5. Sluit dit dialoogvenster.

Stap 2.2: Importeer het notebook in de opslagplaats

In deze substap importeert u een bestaand notitieblok uit een andere opslagplaats in uw opslagplaats. Dit notebook doet het volgende:

  • Kopieert een CSV-bestand uit de GitHub-opslagplaats owid/covid-19-data naar een cluster in uw werkruimte. Dit CSV-bestand bevat openbare gegevens over COVID-19-ziekenhuisopnamen en metrische gegevens over intensieve zorg van over de hele wereld.
  • Leest de inhoud van het CSV-bestand in een PandasDataFrame.
  • Hiermee filtert u de gegevens die metrische gegevens bevatten uit alleen de Verenigde Staten.
  • Geeft een plot weer van de gegevens.
  • Slaat het Pandas DataFrame op als een Pandas-API in SparkDataFrame.
  • Voert gegevensopschoning uit op de Pandas-API in Spark DataFrame.
  • Hiermee schrijft u de Pandas-API in Spark DataFrame als een Delta-tabel in uw werkruimte.
  • Geeft de inhoud van de Delta-tabel weer.

Hoewel u hier uw eigen notitieblok in uw opslagplaats kunt maken, helpt het importeren van een bestaand notitieblok in plaats daarvan om deze doorloop te versnellen. Om een notebook in deze vertakking te maken of een bestaand notitieblok naar deze vertakking te verplaatsen in plaats van een notebook te importeren, zie basisgebruik van werkruimtebestanden.

  1. Klik in de Git-map met de beste notebooks op > maken.

  2. Voer in het dialoogvenster Nieuwe map het volgende in notebooksen klik op Maken.

  3. Klik in de map met notitieblokken op de kebab en vervolgens op Importeren.

  4. In het dialoogvenster Importeren :

    1. Selecteer URLvoor importeren uit.

    2. Voer de URL in naar de onbewerkte inhoud van het covid_eda_raw notitieblok in de databricks/notebook-best-practices opslagplaats in GitHub. De URL verkrijgen: i. Ga naar https://github.com/databricks/notebook-best-practices. Ii. Klik op de notebooks map. Iii. Klik op het covid_eda_raw.py bestand. Iv. Klik op Onbewerkt. v. Kopieer de volledige URL van de adresbalk van uw webbrowser naar het dialoogvenster Importeren .

      Notitie

      Het dialoogvenster Importeren werkt alleen met Git-URL's voor openbare opslagplaatsen.

    3. Klik op Importeren.

Stap 2.3: Het notebook uitvoeren

  1. Als het notitieblok nog niet wordt weergegeven, opent u de map notitieblokken en klikt u vervolgens op het covid_eda_raw notitieblok in de map.
  2. Selecteer het cluster om dit notitieblok aantoe te voegen. Zie Een cluster maken voor instructies voor het maken van een cluster.
  3. Klik op Alles uitvoeren.
  4. Wacht terwijl het notebook draait.

Nadat het notebook is uitgevoerd, ziet u in het notebook een plot van de gegevens en meer dan 600 rijen met onbewerkte gegevens in de Delta-tabel. Als het cluster nog niet actief was toen u dit notebook begon, kan het enkele minuten duren voordat het cluster is opgestart en de resultaten worden weergegeven.

Stap 2.4: Het notitieblok inchecken en samenvoegen

In deze substap slaat u uw werk tot nu toe op uw GitHub-opslagplaats. Vervolgens voegt u het notebook van uw werkvertakking samen met de main-vertakking van uw repository.

  1. Klik naast de naam van het notitieblok op de knop voor de eda Git-vertakking.
  2. Controleer in het best-notebooks dialoogvenster op het tabblad Wijzigingen of het notebooks/covid_eda_raw.py bestand is geselecteerd.
  3. Voer voor doorvoerbericht (vereist) het volgende in Added raw notebook.
  4. Voer voor Beschrijving (optioneel)This is the first version of the notebook.
  5. Klik op Doorvoeren en pushen.
  6. Klik op de koppeling voor de pull-aanvraag in Een pull-aanvraag maken op uw Git-provider in de banner.
  7. Maak in GitHub de pull-aanvraag en voeg de pull-aanvraag vervolgens samen in de main vertakking.
  8. In uw Azure Databricks-werkruimte sluit u het best-notebooks dialoogvenster als het nog steeds wordt weergegeven.

Stap 3: Code verplaatsen naar een gedeelde module

In deze stap verplaatst u een deel van de code in uw notebook naar een set gedeelde functies buiten uw notebook. Hierdoor kunt u deze functies gebruiken met andere vergelijkbare notebooks, waarmee u toekomstige codering kunt versnellen en ervoor kunt zorgen dat de notebookresultaten beter voorspelbaar en consistenter zijn. Door deze code te delen, kunt u deze functies eenvoudiger testen, wat als best practice voor software-engineering de algehele kwaliteit van uw code kan verhogen.

Stap 3.1: Maak een andere werkvertakking in de opslagplaats

  1. Klik naast de naam van het notitieblok op de knop voor de eda Git-vertakking.
  2. Klik in het dialoogvenster best-notebooks op de vervolgkeuzepijl naast de eda-tak en selecteer main.
  3. Klik op Ophalen knop. Als u wordt gevraagd om door te gaan met ophalen, klikt u op Bevestigen.
  4. Klik op de knop Vertakking Maken.
  5. Voer in first_modulesen klik vervolgens op Maken. (U kunt uw tak een andere naam geven.)
  6. Sluit dit dialoogvenster.

Stap 3.2: Importeer het notebook in de opslagplaats

Als u deze procedure wilt versnellen, importeert u in deze substap een ander bestaand notitieblok in uw opslagplaats. Dit notebook doet hetzelfde als het vorige notitieblok, behalve dat dit notebook gedeelde codefuncties aanroept die buiten het notitieblok zijn opgeslagen. Nogmaals, u kunt hier uw eigen notitieblok maken in uw opslagplaats en zelf de code delen.

  1. Klik met de rechtermuisknop in de werkruimtebrowser op de map notitieblokken en klik vervolgens op Importeren.

  2. In het dialoogvenster Importeren :

    1. Selecteer URLvoor importeren uit.

    2. Voer de URL in naar de onbewerkte inhoud van het covid_eda_modular notitieblok in de databricks/notebook-best-practices opslagplaats in GitHub. De URL verkrijgen: i. Ga naar https://github.com/databricks/notebook-best-practices. Ii. Klik op de notebooks map. Iii. Klik op het covid_eda_modular.py bestand. Iv. Klik op Onbewerkt. v. Kopieer de volledige URL van de adresbalk van uw webbrowser naar het dialoogvenster Notitieblokken importeren .

      Notitie

      Het dialoogvenster Notebooks importeren werkt alleen met Git-URL's voor openbare opslagplaatsen.

    3. Klik op Importeren.

Stap 3.3: de ondersteunende gedeelde codefuncties van het notebook toevoegen

  1. Klik in de werkruimtebrowser met de rechtermuisknop op de Git-map best-notebooks en klik vervolgens op Map > maken.

  2. Voer in het dialoogvenster Nieuwe map het volgende in covid_analysisen klik op Maken.

  3. Klik in de map covid_analysis op Create > File.

  4. Voer in het dialoogvenster Nieuwe bestandsnaam het volgende in transforms.pyen klik op Bestand maken.

  5. Voer in het venster transforms.py editor de volgende code in:

    import pandas as pd
    
    # Filter by country code.
    def filter_country(pdf, country="USA"):
      pdf = pdf[pdf.iso_code == country]
      return pdf
    
    # Pivot by indicator, and fill missing values.
    def pivot_and_clean(pdf, fillna):
      pdf["value"] = pd.to_numeric(pdf["value"])
      pdf = pdf.fillna(fillna).pivot_table(
        values="value", columns="indicator", index="date"
      )
      return pdf
    
    # Create column names that are compatible with Delta tables.
    def clean_spark_cols(pdf):
      pdf.columns = pdf.columns.str.replace(" ", "_")
      return pdf
    
    # Convert index to column (works with pandas API on Spark, too).
    def index_to_col(df, colname):
      df[colname] = df.index
      return df
    

Aanbeveling

Zie Code delen tussen Databricks-notebooks voor andere technieken voor het delen van code.

Stap 3.4: De afhankelijkheden van de gedeelde code toevoegen

De voorgaande code heeft verschillende Python-pakketafhankelijkheden om ervoor te zorgen dat de code correct kan worden uitgevoerd. In deze substap declareert u deze pakketafhankelijkheden. Het declareren van afhankelijkheden verbetert de reproduceerbaarheid met behulp van nauwkeurig gedefinieerde versies van bibliotheken.

  1. Klik in de werkruimtebrowser met de rechtermuisknop op de best-notebooks Git-map en klik vervolgens op Bestand > maken.

    Notitie

    U wilt dat het bestand met pakketafhankelijkheden naar de hoofdmap van de Git-map gaat, niet naar de notebooks of covid_analysis mappen.

  2. Voer in het dialoogvenster Nieuwe bestandsnaam het volgende in requirements.txten klik op Bestand maken.

  3. Voer in het venster requirements.txt editor de volgende code in:

    Notitie

    Als het requirements.txt bestand niet zichtbaar is, moet u mogelijk uw webbrowser vernieuwen.

    -i https://pypi.org/simple
    attrs==21.4.0
    cycler==0.11.0
    fonttools==4.33.3
    iniconfig==1.1.1
    kiwisolver==1.4.2
    matplotlib==3.5.1
    numpy==1.22.3
    packaging==21.3
    pandas==1.4.2
    pillow==9.1.0
    pluggy==1.0.0
    py==1.11.0
    py4j==0.10.9.3
    pyarrow==7.0.0
    pyparsing==3.0.8
    pyspark==3.2.1
    pytest==7.1.2
    python-dateutil==2.8.2
    pytz==2022.1
    six==1.16.0
    tomli==2.0.1
    wget==3.2
    

    Notitie

    Het voorgaande bestand bevat specifieke pakketversies. Voor betere compatibiliteit kunt u deze versies kruislings verwijzen naar de versies die zijn geïnstalleerd op uw cluster voor alle doeleinden. Zie de sectie Systeemomgeving voor de Databricks Runtime-versie van uw cluster in releaseversies en compatibiliteit van Databricks Runtime.

Uw opslagplaatsstructuur moet er nu als volgt uitzien:

|-- covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  └── covid_eda_raw (optional)
└── requirements.txt

Stap 3.5: Het geherstructureerde notebook uitvoeren

In deze substap voert u het covid_eda_modular notebook uit, waarmee de gedeelde code wordt aangeroepen in covid_analysis/transforms.py.

  1. Klik in de werkruimtebrowser op het covid_eda_modular Notebook in de map Notitieblokken.
  2. Selecteer het cluster om dit notitieblok aantoe te voegen.
  3. Klik op Alles uitvoeren.
  4. Wacht terwijl het notebook draait.

Nadat het notebook is voltooid, zou u in het notebook vergelijkbare resultaten moeten zien als in het covid_eda_raw notebook: een grafiek van de gegevens en meer dan 600 rijen ruwe gegevens in de Delta-tabel. Het belangrijkste verschil met deze notebook is dat er een ander filter wordt gebruikt (een iso_code van DZA in plaats van USA). Als het cluster nog niet actief was toen u dit notebook begon, kan het enkele minuten duren voordat het cluster is opgestart en de resultaten worden weergegeven.

  1. Klik naast de naam van het notitieblok op de Git-vertakkingknop first_modules.
  2. Controleer in het dialoogvenster Beste notitieblokken op het tabblad Wijzigingen dat het volgende is geselecteerd:
    • requirements.txt
    • covid_analysis/transforms.py
    • notebooks/covid_eda_modular.py
  3. Voer voor doorvoerbericht (vereist) het volgende in Added refactored notebook.
  4. Voer voor Beschrijving (optioneel)This is the second version of the notebook.
  5. Klik op Doorvoeren en pushen.
  6. Klik op de koppeling voor de pull-aanvraag in Een pull-aanvraag maken op uw Git-provider in de banner.
  7. Maak in GitHub de pull-aanvraag en voeg de pull-aanvraag vervolgens samen in de main vertakking.
  8. In uw Azure Databricks-werkruimte sluit u het best-notebooks dialoogvenster als het nog steeds wordt weergegeven.

Stap 4: De gedeelde code testen

In deze stap test u de gedeelde code uit de laatste stap. U wilt deze code echter testen zonder het covid_eda_modular notebook zelf uit te voeren. Dit komt omdat als de gedeelde code niet kan worden uitgevoerd, het notebook zelf waarschijnlijk ook niet kan worden uitgevoerd. U wilt eerst fouten in uw gedeelde code opsporen om ervoor te zorgen dat uw hoofdnotebook later niet mislukt. Deze testtechniek is een best practice voor software-engineering.

Aanbeveling

Zie Eenheidstests voor notebooks voor aanvullende methoden voor het testen van notebooks en het testen van R- en Scala-notebooks.

Stap 4.1: Maak een nieuwe werkvertakking in de repository

  1. Klik naast de naam van het notitieblok op de Git-vertakkingknop first_modules.
  2. Klik in het dialoogvenster best-notebooks op de vervolgkeuzepijl naast de first_modules vertakking en selecteer main.
  3. Klik op Ophalen knop. Als u wordt gevraagd om door te gaan met ophalen, klikt u op Bevestigen.
  4. Klik op Vertakking maken.
  5. Voer in first_testsen klik vervolgens op Maken. (U kunt uw tak een andere naam geven.)
  6. Sluit dit dialoogvenster.

Stap 4.2: De tests toevoegen

In deze substap gebruikt u het pytest-framework om uw gedeelde code te testen. In deze tests geeft u aan of bepaalde testresultaten worden behaald. Als een test een onverwacht resultaat oplevert, mislukt die specifieke test de assertie en mislukt de test zelf.

  1. Klik in de werkruimtebrowser met de rechtermuisknop op uw Git-map en klik vervolgens op Map maken>.

  2. Voer in het dialoogvenster Nieuwe map het volgende in testsen klik op Maken.

  3. Klik in de map Tests op Bestand > Maken.

  4. Voer in het dialoogvenster Nieuwe bestandsnaam het volgende in testdata.csven klik op Bestand maken.

  5. Voer in testdata.csv editorvenster de volgende testgegevens in:

    entity,iso_code,date,indicator,value
    United States,USA,2022-04-17,Daily ICU occupancy,
    United States,USA,2022-04-17,Daily ICU occupancy per million,4.1
    United States,USA,2022-04-17,Daily hospital occupancy,10000
    United States,USA,2022-04-17,Daily hospital occupancy per million,30.3
    United States,USA,2022-04-17,Weekly new hospital admissions,11000
    United States,USA,2022-04-17,Weekly new hospital admissions per million,32.8
    Algeria,DZA,2022-04-18,Daily ICU occupancy,1010
    Algeria,DZA,2022-04-18,Daily ICU occupancy per million,4.5
    Algeria,DZA,2022-04-18,Daily hospital occupancy,11000
    Algeria,DZA,2022-04-18,Daily hospital occupancy per million,30.9
    Algeria,DZA,2022-04-18,Weekly new hospital admissions,10000
    Algeria,DZA,2022-04-18,Weekly new hospital admissions per million,32.1
    
  6. Klik in de map Tests op Bestand > Maken.

  7. Voer in het dialoogvenster Nieuwe bestandsnaam het volgende in transforms_test.pyen klik op Bestand maken.

  8. Voer in transforms_test.py editorvenster de volgende testcode in. Deze tests gebruiken standaard pytestarmaturen en een gesimuleerd pandas DataFrame in het geheugen:

    # Test each of the transform functions.
    import pytest
    from textwrap import fill
    import os
    import pandas as pd
    import numpy as np
    from covid_analysis.transforms import *
    from pyspark.sql import SparkSession
    
    @pytest.fixture
    def raw_input_df() -> pd.DataFrame:
      """
      Create a basic version of the input dataset for testing, including NaNs.
      """
      return pd.read_csv('tests/testdata.csv')
    
    @pytest.fixture
    def colnames_df() -> pd.DataFrame:
      df = pd.DataFrame(
        data=[[0,1,2,3,4,5]],
        columns=[
          "Daily ICU occupancy",
          "Daily ICU occupancy per million",
          "Daily hospital occupancy",
          "Daily hospital occupancy per million",
          "Weekly new hospital admissions",
          "Weekly new hospital admissions per million"
        ]
      )
      return df
    
    # Make sure the filter works as expected.
    def test_filter(raw_input_df):
      filtered = filter_country(raw_input_df)
      assert filtered.iso_code.drop_duplicates()[0] == "USA"
    
    # The test data has NaNs for Daily ICU occupancy; this should get filled to 0.
    def test_pivot(raw_input_df):
      pivoted = pivot_and_clean(raw_input_df, 0)
      assert pivoted["Daily ICU occupancy"][0] == 0
    
    # Test column cleaning.
    def test_clean_cols(colnames_df):
      cleaned = clean_spark_cols(colnames_df)
      cols_w_spaces = cleaned.filter(regex=(" "))
      assert cols_w_spaces.empty == True
    
    # Test column creation from index.
    def test_index_to_col(raw_input_df):
      raw_input_df["col_from_index"] = raw_input_df.index
      assert (raw_input_df.index == raw_input_df.col_from_index).all()
    

Uw opslagplaatsstructuur moet er nu als volgt uitzien:

├── covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  └── covid_eda_raw (optional)
├── requirements.txt
└── tests
    ├── testdata.csv
    └── transforms_test.py

Stap 4.3: De tests uitvoeren

Als u deze procedure wilt versnellen, gebruikt u in deze substap een geïmporteerd notebook om de voorgaande tests uit te voeren. Met dit notebook worden de afhankelijke Python-pakketten van de tests gedownload en geïnstalleerd in uw werkruimte, worden de tests uitgevoerd en worden de resultaten van de tests gerapporteerd. Hoewel u kunt uitvoeren pytest vanuit de webterminal van uw cluster, kan het handiger zijn om vanuit een notebook uit te voeren pytest .

Notitie

Alle bestanden in de huidige map en zijn submappen uitvoeren waarvan de namen het patroon pytest of test_*.py volgen.

  1. Klik met de rechtermuisknop in de werkruimtebrowser op de map notitieblokken en klik vervolgens op Importeren.

  2. In het dialoogvenster Notitieblokken importeren :

    1. Selecteer URLvoor importeren uit.

    2. Voer de URL in naar de onbewerkte inhoud van het run_unit_tests notitieblok in de databricks/notebook-best-practices opslagplaats in GitHub. De URL verkrijgen: i. Ga naar https://github.com/databricks/notebook-best-practices. Ii. Klik op de notebooks map. Iii. Klik op het run_unit_tests.py bestand. Iv. Klik op Onbewerkt. v. Kopieer de volledige URL van de adresbalk van uw webbrowser naar het dialoogvenster Notitieblokken importeren .

      Notitie

      Het dialoogvenster Notebooks importeren werkt alleen met Git-URL's voor openbare opslagplaatsen.

    3. Klik op Importeren.

  3. Selecteer het cluster om dit notitieblok aantoe te voegen.

  4. Klik op Alles uitvoeren.

  5. Wacht terwijl het notebook draait.

Nadat het notebook is uitgevoerd, ziet u in het notebook informatie over het aantal geslaagde en mislukte tests, samen met andere gerelateerde details. Als het cluster nog niet actief was toen u dit notebook begon, kan het enkele minuten duren voordat het cluster is opgestart en de resultaten worden weergegeven.

Uw opslagplaatsstructuur moet er nu als volgt uitzien:

├── covid_analysis
│  └── transforms.py
├── notebooks
│  ├── covid_eda_modular
│  ├── covid_eda_raw (optional)
│  └── run_unit_tests
├── requirements.txt
└── tests
    ├── testdata.csv
    └── transforms_test.py
  1. Klik naast de naam van het notitieblok op de knop voor de first_tests Git-branch.
  2. Controleer in het dialoogvenster Beste notitieblokken op het tabblad Wijzigingen dat het volgende is geselecteerd:
    • tests/transforms_test.py
    • notebooks/run_unit_tests.py
    • tests/testdata.csv
  3. Voer voor doorvoerbericht (vereist) het volgende in Added tests.
  4. Voer bij Beschrijving (optioneel) de tekst in These are the unit tests for the shared code..
  5. Klik op Doorvoeren en pushen.
  6. Klik op de koppeling voor de pull-aanvraag in Een pull-aanvraag maken op uw Git-provider in de banner.
  7. Maak in GitHub de pull-aanvraag en voeg de pull-aanvraag vervolgens samen in de main vertakking.
  8. In uw Azure Databricks-werkruimte sluit u het best-notebooks dialoogvenster als het nog steeds wordt weergegeven.

Stap 5: Een taak maken om de notebooks uit te voeren

In de vorige stappen hebt u uw gedeelde code handmatig getest en uw notebooks handmatig uitgevoerd. In deze stap gebruikt u een Azure Databricks-taak om uw gedeelde code te testen en uw notebooks automatisch uit te voeren, op aanvraag of volgens een normaal schema.

Stap 5.1: Een taaktaak maken om het testnotebook uit te voeren

  1. Klik in uw werkruimte op het pictogram Werkstromen.Taken en pijplijnen in de zijbalk.
  2. Klik Maken en vervolgens Taak.
  3. Bewerk de functienaam naar covid_report.
  4. Klik op de tegel Notitieblok om de eerste taak te configureren. Als de tegel Notitieblok niet beschikbaar is, klikt u op Nog een taaktype toevoegen en zoekt u naar Notitieblok.
  5. Voer de naam van de taak in run_notebook_tests.
  6. Selecteer indien nodig Notitieblok in de vervolgkeuzelijst Type .
  7. Selecteer Git-providervoor bron.
  8. Klik op Een Git-verwijzing toevoegen.
  9. In het dialoogvenster Git-gegevens :
    1. Voer voor de URL van de Git-opslagplaats de GitHub-kloon in met HTTPS-URL voor uw GitHub-opslagplaats. In dit artikel wordt ervan uitgegaan dat uw URL eindigt op best-notebooks.gitbijvoorbeeld https://github.com/<your-GitHub-username>/best-notebooks.git.
    2. Selecteer GitHub-voor Git-provider.
    3. Voer voor Git-naslaginformatie (vertakking/tag/doorvoer) het in main.
    4. Selecteer naast Git-verwijzing (vertakking/tag/commit)de vertakking.
    5. Klik op Bevestigen.
  10. Voer bij Pad in notebooks/run_unit_tests. Voeg de .py bestandsextensie niet toe.
  11. Selecteer voor Clusterhet cluster uit de vorige stap.
  12. Klik op Taak maken.

Notitie

In dit scenario raadt Databricks u niet aan om de planningsknop in het notebook te gebruiken, zoals beschreven in Geplande notebooktaken maken en beheren om een taak te plannen om dit notebook periodiek uit te voeren. Dit komt doordat de planningsknop een taak aanmaakt door de meest recente werkende kopie van het notebook in de werkruimterepository te gebruiken. In plaats daarvan raadt Databricks u aan de voorgaande instructies te volgen om een taak te maken die gebruikmaakt van de meest recente commit-versie van het notebook in de repository.

Stap 5.2: Een taaktaak maken om het hoofdnotitieblok uit te voeren

  1. Klik op het pictogram + Taak toevoegen.
  2. Er wordt een pop-upmenu weergegeven. Selecteer Notebook.
  3. Voer de naam van de taak in run_main_notebook.
  4. Voor Type, selecteer Notebook.
  5. Voer bij Pad in notebooks/covid_eda_modular. Voeg de .py bestandsextensie niet toe.
  6. Selecteer voor Clusterhet cluster uit de vorige stap.
  7. Controleer de waarde van Afhankelijk van is run_notebook-tests.
  8. Klik op Taak maken.

Stap 5.3 De taak uitvoeren

  1. Klik op Nu uitvoeren.

  2. Klik in de pop-up op Run bekijken.

    Notitie

    Als het pop-upvenster te snel verdwijnt, gaat u als volgt te werk:

    1. Klik in de zijbalk in de Data Science & Engineering - of Databricks Mosaic AI-omgeving op Jobs & Pipelines.
    2. Klik op het tabblad Taakuitvoeringen op de waarde voor Begintijd van de laatste taak met covid_report in de rubriek Taken.
  3. Als u de taakresultaten wilt zien, klikt u op de tegel run_notebook_tests , de tegel run_main_notebook of beide. De resultaten op elke tegel zijn hetzelfde als wanneer u de notebooks zelf hebt uitgevoerd, één voor één.

Notitie

Deze taak is op aanvraag uitgevoerd. Zie Taken automatiseren met planningen en triggersom deze taak regelmatig uit te voeren.

Optioneel: Stap 6: Stel de repository in om de code te testen en het notebook automatisch uit te voeren bij wijzigingen in de code

In de vorige stap hebt u een taak gebruikt om uw gedeelde code automatisch te testen en uw notebooks op een specifiek moment of op regelmatige basis uit te voeren. U kunt echter liever automatisch tests activeren wanneer wijzigingen worden samengevoegd in uw GitHub-opslagplaats, met behulp van een CI/CD-hulpprogramma zoals GitHub Actions.

Stap 6.1: GitHub-toegang tot uw werkruimte instellen

In deze substap stelt u een GitHub Actions-werkstroom in waarmee taken in de werkruimte worden uitgevoerd wanneer wijzigingen worden samengevoegd in uw opslagplaats. U doet dit door GitHub een uniek Azure Databricks-token te geven voor toegang.

Om veiligheidsredenen raadt Databricks u af om het persoonlijke toegangstoken van uw Azure Databricks-werkruimtegebruiker aan GitHub te geven. In plaats daarvan raadt Databricks u aan GitHub een Microsoft Entra ID-token te geven dat is gekoppeld aan een Microsoft Entra ID-service-principal. Zie de Azure-sectie van de gitHub-actiepagina Databricks Notebook uitvoeren in de GitHub Actions Marketplace voor instructies.

Belangrijk

Notebooks worden uitgevoerd met alle werkruimtemachtigingen van de identiteit die is gekoppeld aan het token, dus Databricks raadt het gebruik van een service-principal aan. Als u het persoonlijke toegangstoken van uw Azure Databricks-werkruimtegebruiker alleen voor persoonlijke verkenningsdoeleinden aan GitHub wilt geven en u begrijpt dat Databricks deze procedure om veiligheidsredenen deze procedure ontmoedigt, raadpleegt u de instructies voor het maken van het persoonlijke toegangstoken van uw werkruimtegebruiker.

Stap 6.2: De GitHub Actions-werkstroom toevoegen

In deze substap voegt u een GitHub Actions-werkstroom toe om het run_unit_tests notebook uit te voeren wanneer er een pull-aanvraag naar de opslagplaats is.

In deze substap wordt de GitHub Actions-werkstroom opgeslagen in een bestand dat is opgeslagen in meerdere mapniveaus in uw GitHub-opslagplaats. Voor GitHub Actions moet een specifieke geneste mappenhiërarchie aanwezig zijn in uw opslagplaats voor een goede werking. Als u deze stap wilt voltooien, moet u de website voor uw GitHub-repository gebruiken, omdat de gebruikersinterface van de Azure Databricks Git-map geen ondersteuning biedt voor geneste mappenstructuren.

  1. Klik op het tabblad Code op de website voor uw GitHub-opslagplaats.

  2. Klik op de pijl naast main om de vervolgkeuzelijst Branches of tags uit te vouwen.

  3. Voer in het vak Zoek of maak een branch aanadding_github_actions in.

  4. Klik op Maak een nieuwe vertakking: adding_github_actions van 'main'.

  5. Klik op Bestand > toevoegen Nieuw bestand maken.

  6. Voer voor Geef uw bestand een naam een naam in .github/workflows/databricks_pull_request_tests.yml.

  7. Voer in het editorvenster de volgende code in. Deze code maakt gebruik van de pull_request hook van de Run Databricks Notebook GitHub Action om het run_unit_tests notebook uit te voeren.

    Vervang in de volgende code:

    name: Run pre-merge Databricks tests
    
    on:
      pull_request:
    
    env:
      # Replace this value with your workspace instance name.
      DATABRICKS_HOST: https://<your-workspace-instance-name>
    
    jobs:
      unit-test-notebook:
        runs-on: ubuntu-latest
        timeout-minutes: 15
    
        steps:
          - name: Checkout repo
            uses: actions/checkout@v2
          - name: Run test notebook
            uses: databricks/run-notebook@main
            with:
              databricks-token: <your-access-token>
    
              local-notebook-path: notebooks/run_unit_tests.py
    
              existing-cluster-id: <your-cluster-id>
    
              git-commit: '${{ github.event.pull_request.head.sha }}'
    
              # Grant all users view permission on the notebook's results, so that they can
              # see the result of the notebook, if they have related access permissions.
              access-control-list-json: >
                [
                  {
                    "group_name": "users",
                    "permission_level": "CAN_VIEW"
                  }
                ]
              run-name: 'EDA transforms helper module unit tests'
    
  8. Klik op Wijzigingen doorvoeren.

  9. Voer in het dialoogvenster Wijzigingen doorvoerenCreate databricks_pull_request_tests.yml in het veld Commit boodschap in.

  10. Selecteer Voer direct door naar de adding_github_actions branche en klik op Doorvoeren van wijzigingen.

  11. Klik op het tabblad Code op Vergelijken en pull-aanvraag en maak vervolgens de pull-aanvraag.

  12. Wacht op de pull request-pagina totdat het pictogram naast Run pre-merge Databricks tests / unit-test-notebook (pull_request) een groen vinkje weergeeft. (Het kan even duren voordat het pictogram wordt weergegeven.) Als er een rode X is in plaats van een groen vinkje, klikt u op Details om erachter te komen waarom. Als het pictogram of de details niet meer worden weergegeven, klikt u op Alle controles weergeven.

  13. Als het groene vinkje wordt weergegeven, voegt u de pull-aanvraag samen in de main vertakking.

(Optioneel) Stap 7: de gedeelde code in GitHub bijwerken om tests te activeren

In deze stap wijzigt u de gedeelde code en pusht u de wijziging vervolgens naar uw GitHub-opslagplaats, waarmee de tests automatisch worden geactiveerd op basis van de GitHub-actie uit de vorige stap.

Stap 7.1: Maak een andere werkbranch in de repository

  1. Open de Git-map met de naam best-notebooks in de werkruimtebrowser.
  2. Klik naast de naam van de map op de Git-knop voor first_tests branch.
  3. Klik in het dialoogvenster beste notitieblokken op de vervolgkeuzepijl naast de first_tests branch en selecteer main.
  4. Klik op Ophalen knop. Als u wordt gevraagd om door te gaan met ophalen, klikt u op Bevestigen.
  5. Klik op de + knop (Vertakking maken).
  6. Voer in trigger_testsen klik vervolgens op Maken. (U kunt uw tak een andere naam geven.)
  7. Sluit dit dialoogvenster.

Stap 7.2: De gedeelde code wijzigen

  1. Klik in de werkruimtebrowser, in de best-notebooks Git-map, op het bestand covid_analysis/transforms.py.

  2. Wijzig de derde regel van dit bestand:

    # Filter by country code.
    

    Dit:

    # Filter by country code. If not specified, use "USA."
    

Stap 7.3: Controleer de wijziging om de tests te activeren

  1. Klik naast de bestandsnaam op de knop van de Git-vertakking 'trigger_tests'.
  2. Controleer in het best-notebooks dialoogvenster op het tabblad Wijzigingen of covid_analysis/transforms.py is geselecteerd.
  3. Voer voor doorvoerbericht (vereist) het volgende in Updated comment.
  4. Voer voor Beschrijving (optioneel)This updates the comment for filter_country.
  5. Klik op Doorvoeren en pushen.
  6. Klik op de koppeling voor de pull-aanvraag in Een pull-aanvraag maken op uw Git-provider in de banner en maak vervolgens de pull-aanvraag in GitHub.
  7. Wacht op de pull request-pagina totdat het pictogram naast Run pre-merge Databricks tests / unit-test-notebook (pull_request) een groen vinkje weergeeft. (Het kan even duren voordat het pictogram wordt weergegeven.) Als er een rode X is in plaats van een groen vinkje, klikt u op Details om erachter te komen waarom. Als het pictogram of de details niet meer worden weergegeven, klikt u op Alle controles weergeven.
  8. Als het groene vinkje wordt weergegeven, voegt u de pull-aanvraag samen in de main vertakking.