Freigeben über


Manuelles Erstellen eines Pakets

In diesem Tutorial erstellen Sie ein Databricks-Asset-Bundle von Grund auf. Dieses einfache Paket besteht aus zwei Notebooks und der Definition eines Azure Databricks-Auftrags, um sie auszuführen. Anschließend validieren Sie den Einzelvorgang, stellen ihn bereit und führen ihn in Ihrem Azure Databricks-Arbeitsbereich aus. Mit diesen Schritten wird die Schnellstartanleitung mit dem Titel "Erstellen Ihres ersten Workflows mit Lakeflow-Aufträgen" automatisiert.

Anforderungen

  • Databricks-CLI-Version 0.218.0 oder höher. Führen Sie den Befehl databricks -v aus, um zu überprüfen, welche Version der Databricks-CLI installiert ist. Informationen zum Installieren der Databricks CLI finden Sie unter Installieren oder Aktualisieren der Databricks CLI.
  • Authentifizierung für die Databricks-CLI konfiguriert. Die U2M-Authentifizierung eignet sich für das Testen dieser Schritte in Echtzeit. Weitere Informationen finden Sie unter Authentifizierung für die Databricks CLI.
  • Für den Remote-Databricks-Arbeitsbereich müssen Arbeitsbereichsdateien aktiviert sein. Weitere Informationen finden Sie unter Was sind Arbeitsbereichsdateien?.

Schritt 1: Erstellen des Bundles

Ein Bündel enthält die Artefakte, die Sie bereitstellen möchten, und die Einstellungen für die Ressourcen, die Sie ausführen möchten.

  1. Erstellen oder identifizieren Sie ein leeres Verzeichnis auf Ihrem Entwicklungscomputer.
  2. Wechseln Sie zu dem leeren Verzeichnis in Ihrem Terminal oder öffnen Sie es in Ihrer IDE.

Tipp

Sie können auch ein Verzeichnis verwenden, das ein von einem Git-Anbieter geklontes Repository enthält. So können Sie Ihr Bundle mit einer externen Versionskontrolle verwalten und einfacher mit anderen Entwicklern und IT-Experten an Ihrem Projekt zusammenarbeiten.

Wenn Sie ein Repository für diese Demo klonen, empfiehlt Databricks ein Repository, das leer ist oder nur grundlegende Dateien wie README und .gitignore enthält. Andernfalls werden alle bereits vorhandenen Dateien im Repository möglicherweise unnötig mit Ihrem Azure Databricks-Arbeitsbereich synchronisiert.

Schritt 2: Hinzufügen von Notebooks zum Projekt

In diesem Schritt fügen Sie zwei Notebooks zu Ihrem Projekt hinzu. Das erste Notizbuch erhält eine Liste der beliebten Babynamen seit 2007 aus den öffentlichen Datenquellen des New York State Department of Health. See Baby-Namen: Trending by Name: Beginning 2007 on the department's website. Das erste Notebook speichert diese Daten dann in Ihrem Azure Databricks Unity Katalog-Volume namens my-volume in einem Schema namens default in a Katalog named main. Das zweite Notebook fragt die gespeicherten Daten ab und zeigt die aggregierte Anzahl der Babynamen nach Vornamen sowie das jeweilige Geschlecht für das Jahr 2014 an.

  1. Erstellen Sie aus dem Stammverzeichnis das erste Notizbuch, eine Datei mit dem Namen retrieve-baby-names.py.

  2. Fügen Sie der Datei retrieve-baby-names.py den folgenden Code hinzu:

    # 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. Erstellen Sie das zweite Notebook, eine Datei namens filter-baby-names.py im selben Verzeichnis.

  4. Fügen Sie der Datei filter-baby-names.py den folgenden Code hinzu:

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

Schritt 3: Hinzufügen einer Konfigurationsschemadatei für Bündeleinstellungen zum Projekt

Wenn Sie eine IDE wie Visual Studio Code, PyCharm Professional oder IntelliJ IDEA Ultimate verwenden, die YAML-Dateien und JSON-Schemadateien unterstützt, können Sie Ihre IDE verwenden, um nicht nur die Paketkonfigurationsschemadatei zu erstellen, sondern um die Bündelkonfigurationsdateisyntax und -formatierung Ihres Projekts zu überprüfen.

Visual Studio Code

  1. Fügen Sie Visual Studio Code-Unterstützung für YAML-Sprachserver hinzu, z. B. durch Installieren der YAML-Erweiterung aus dem Visual Studio Code Marketplace.

  2. Generieren Sie die JSON-Schemadatei der Databricks-Ressourcenbundlekonfiguration, indem Sie die Databricks-CLI verwenden, um den Befehl bundle schema auszuführen und die Ausgabe an eine JSON-Datei umzuleiten. Erzeugen Sie zum Beispiel eine Datei mit dem Namen bundle_config_schema.json im aktuellen Verzeichnis wie folgt:

    databricks bundle schema > bundle_config_schema.json
    
  3. In Schritt 4 fügen Sie am Anfang der Bundlekonfigurationsdatei den folgenden Kommentar hinzu, der die Bündelkonfigurationsdatei der angegebenen JSON-Schemadatei zuordnet:

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

    Hinweis

    Wenn sich Ihre JSON-Konfigurationsschemadatei des Databricks-Ressourcenbundles in einem anderen Pfad befindet, ersetzen Sie bundle_config_schema.json im vorherigen Kommentar durch den vollständigen Pfad zu Ihrer Schemadatei.

PyCharm Professional

  1. Generieren Sie die JSON-Schemadatei für die Konfiguration des Databricks-Asset-Bündels mithilfe der Databricks-CLI, um die bundle schema auszuführen und die Ausgabe in eine JSON-Datei umzuleiten. Erzeugen Sie zum Beispiel eine Datei mit dem Namen bundle_config_schema.json im aktuellen Verzeichnis wie folgt:

    databricks bundle schema > bundle_config_schema.json
    
  2. Konfigurieren Sie PyCharm, um die JSON-Schemadatei der Bundlekonfiguration zu erkennen. Schließen Sie dann die JSON-Schemazuordnung ab, indem Sie die Anweisungen unter Konfigurieren eines benutzerdefinierten JSON-Schemasbefolgen.

  3. In Schritt 4 verwenden Sie PyCharm, um eine Bündelkonfigurationsdatei zu erstellen oder zu öffnen. Grundsätzlich heißt diese Datei databricks.yml.

IntelliJ IDEA Ultimate

  1. Generieren Sie die JSON-Schemadatei der Databricks-Ressourcenbundlekonfiguration, indem Sie die Databricks-CLI verwenden, um den Befehl bundle schema auszuführen und die Ausgabe an eine JSON-Datei umzuleiten. Erzeugen Sie zum Beispiel eine Datei mit dem Namen bundle_config_schema.json im aktuellen Verzeichnis wie folgt:

    databricks bundle schema > bundle_config_schema.json
    
  2. Konfigurieren Sie IntelliJ IDEA, um die JSON-Schemadatei der Bundlekonfiguration zu erkennen. Schließen Sie dann die JSON-Schemazuordnung ab, indem Sie die Anweisungen unter Konfigurieren eines benutzerdefinierten JSON-Schemasbefolgen.

  3. In Schritt 4 verwenden Sie IntelliJ IDEA, um eine Bündelkonfigurationsdatei zu erstellen oder zu öffnen. Grundsätzlich heißt diese Datei databricks.yml.

Schritt 4: Hinzufügen einer Bündelkonfigurationsdatei zum Projekt

In diesem Schritt definieren Sie, wie Sie die beiden Notebooks bereitstellen und ausführen. Für diese Demo möchten Sie einen Azure Databricks-Auftrag verwenden, um zunächst das erste und dann das zweite Notebook auszuführen. Da das erste Notebook die Daten speichert, und das zweite Notebook die gespeicherten Daten abfragt, soll die Ausführung des ersten Notebooks abgeschlossen sein, bevor das zweite Notebook gestartet wird. Sie modellieren diese Ziele in einer Bundle-Konfigurationsdatei in Ihrem Projekt.

  1. Erstellen Sie aus dem Stammverzeichnis die Bündelkonfigurationsdatei, eine Datei mit dem Namen databricks.yml.
  2. Fügen Sie der Datei databricks.yml den folgenden Code hinzu, und ersetzen Sie dabei <workspace-url> durch Ihre jeweilige Arbeitsbereichs-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net. Diese URL muss mit der URL in Ihrer .databrickscfg-Datei übereinstimmen:

Tipp

Die erste Zeile, beginnend mit # yaml-language-server, ist nur erforderlich, wenn Ihre IDE diese unterstützt. Ausführliche Informationen finden Sie weiter oben in Schritt 3.

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

Für das Customizing von Einzelvorgängen entsprechen die Mappings in einer Auftragsdeklaration der im YAML-format ausgedrückten Nutzlast der Anforderung des Vorgangs "Create Job", wie in POST /api/2.1/jobs/create in REST API Referenz.

Tipp

Sie können die Einstellungen für neue Auftragscluster in Bundles definieren, kombinieren und überschreiben, indem Sie die unter Überschreiben mit Zieleinstellungen beschriebenen Techniken verwenden.

Schritt 5: Überprüfen der Paketkonfigurationsdatei des Projekts

In diesem Schritt überprüfen Sie, ob die Bundlekonfiguration gültig ist.

  1. Verwenden Sie die Databricks CLI, um den Befehl bundle validate folgendermaßen auszuführen:

    databricks bundle validate
    
  2. Wenn eine Zusammenfassung der Bundlekonfiguration zurückgegeben wird, war die Prüfung erfolgreich. Wenn Fehler zurückgegeben werden, müssen Sie sie beheben und dann diesen Schritt wiederholen.

Wenn Sie nach diesem Schritt Änderungen an Ihrem Bundle vornehmen, sollten Sie diesen Schritt wiederholen, um zu überprüfen, ob Ihre Bundlekonfiguration noch gültig ist.

Schritt 6: Bereitstellen des lokalen Projekts im Remotearbeitsbereich

In diesem Schritt stellen Sie die beiden lokalen Notebooks in Ihrem entfernten Azure Databricks-Arbeitsbereich bereit und erstellen den Azure Databricks-Einzelvorgang in Ihrem Arbeitsbereich.

  1. Verwenden Sie die Databricks CLI, um den Befehl bundle deploy folgendermaßen auszuführen:

    databricks bundle deploy -t development
    
  2. Überprüfen Sie, ob die beiden lokalen Notizbücher bereitgestellt wurden: Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf "Arbeitsbereich".

  3. Klicken Sie in den Ordner Benutzende ><your-username>> .bundle > baby-names > Entwicklung > Dateien. Die beiden Notizbücher sollten sich in diesem Ordner befinden.

  4. Überprüfen Sie, ob der Auftrag erstellt wurde: Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf Aufträge und Pipelines.

  5. Wählen Sie optional die Filter "Jobs " und "Owned by me" aus .

  6. Klicken Sie auf retrieve-filter-baby-names-job.

  7. Klicken Sie auf die Registerkarte Aufgaben. Dort sollte es zwei Aufgaben geben: retrieve-baby-names-task und filter-baby-names-task.

Wenn Sie nach diesem Schritt Änderungen an Ihrem Bündel vornehmen, sollten Sie die Schritte 6 bis 7 wiederholen, um zu überprüfen, ob Ihre Bündelkonfiguration noch gültig ist, und dann das Projekt erneut bereitstellen.

Schritt 7: Ausführen des bereitgestellten Projekts

In diesem Schritt führen Sie den Azure Databricks-Auftrag in Ihrem Arbeitsbereich aus.

  1. Verwenden Sie die Databricks CLI, um den Befehl bundle run folgendermaßen auszuführen:

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. Kopieren Sie den Wert von Run URL, der in Ihrem Terminal angezeigt wird, und fügen Sie ihn in Ihren Webbrowser ein, um Ihren Azure Databricks-Arbeitsbereich zu öffnen.

  3. Klicken Sie, nachdem die beiden Aufgaben erfolgreich abgeschlossen wurden und grüne Titelleisten angezeigt werden, in Ihrem Azure Databricks-Arbeitsbereich auf die Aufgabe filter-baby-names-task, um die Abfrageergebnisse anzuzeigen.

Wenn Sie nach diesem Schritt Änderungen an Ihrem Bündel vornehmen, sollten Sie die Schritte 6 bis 8 wiederholen, um zu überprüfen, ob Ihre Bündelkonfiguration noch gültig ist, das Projekt erneut bereitstellen und dieses Projekt ausführen.

Schritt 8: Bereinigen

In diesem Schritt löschen Sie die beiden bereitgestellten Notebooks und den Auftrag aus Ihrem Arbeitsbereich.

  1. Verwenden Sie die Databricks CLI, um den Befehl bundle destroy folgendermaßen auszuführen:

    databricks bundle destroy
    
  2. Bestätigen Sie die Anforderung zum Löschen des Auftrags: Wenn Sie aufgefordert werden, die Ressourcen dauerhaft zu löschen, geben Sie y ein, und drücken Sie dann Enter.

  3. Bestätigen Sie die Anforderung zum Löschen der Notebooks: Wenn Sie aufgefordert werden, den zuvor bereitgestellten Ordner und alle zugehörigen Dateien dauerhaft zu löschen, geben Sie y ein, und drücken Sie dann Enter.

Durch Ausführen des Befehls bundle destroy werden nur der bereitgestellte Auftrag und der Ordner, der die beiden bereitgestellten Notebooks enthält, gelöscht. Dieser Befehl löscht keine Nebenwirkungen, z. B. die babynames.csv-Datei, die das erste Notebook erstellt hat. Gehen Sie folgendermaßen vor, um die babybnames.csv-Datei zu löschen:

  1. Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Katalog.
  2. Klicken Sie auf DBFS durchsuchen.
  3. Klicken Sie auf den Ordner FileStore.
  4. Klicken Sie auf den Dropdownpfeil neben babynames.csv dann auf Löschen.
  5. Wenn Sie das Bündel auch von Ihrem Entwicklungscomputer löschen möchten, können Sie jetzt das lokale Verzeichnis aus Schritt 1 löschen.