Entwickeln von Delta Live Tables-Pipelines mit Databricks-Ressourcenbundles

Databricks-Ressourcenbundles, die auch einfach als Bundles bezeichnet werden, ermöglichen Ihnen die programmgesteuerte Überprüfung, Bereitstellung und Ausführung von Azure Databricks-Ressourcen wie z. B. Delta Live Tables-Pipelines. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenbundles?

In diesem Artikel wird beschrieben, wie Sie ein Bundle erstellen, um eine Pipeline programmgesteuert zu verwalten. Weitere Informationen finden Sie unter Was sind Delta Live-Tabellen?. In diesen Schritten erstellen Sie das Bundle mithilfe der standardmäßigen Azure Databricks-Bundlevorlage für Python, die aus einem Notebook oder Python-Code besteht, zusammen mit der Definition einer Pipeline und eines Auftrags für die Ausführung. Sie überprüfen dann die Pipeline, stellen sie bereit und führen die bereitgestellte Pipeline in Ihrem Azure Databricks-Arbeitsbereich aus.

Tipp

Wenn Sie über vorhandene Pipelines verfügen, die mithilfe der Benutzeroberfläche von Azure Databricks oder der API erstellt wurden und die Sie in Bundle verschieben möchten, müssen Sie sie als Bundle-Konfigurationsdateien neu erstellen. Dazu empfiehlt Databricks, zunächst ein Bundle mithilfe der nachstehenden Schritte zu erstellen und zu überprüfen, ob das Bundle funktioniert. Anschließend können Sie dem Bundle Definitionen, Notebooks und andere Quellen hinzufügen. Siehe Hinzufügen einer vorhandenen Pipelinedefinition zu einem Bündel.

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.
  • Für den Remotearbeitsbereich müssen Arbeitsbereichsdateien aktiviert sein. Weitere Informationen finden Sie unter Was sind Arbeitsbereichsdateien?.

(Optional) Installieren eines Python-Moduls zur Unterstützung der lokalen Pipelineentwicklung

Databricks bietet ein Python-Modul, das die lokale Entwicklung von Delta Live Tables-Pipelinecode unterstützt, indem Syntaxüberprüfung, AutoVervollständigen und Datentypüberprüfung beim Schreiben von Code in Ihrer IDE bereitgestellt werden.

Das Python-Modul für die lokale Entwicklung ist auf PyPi verfügbar. Informationen zum Installieren des Moduls finden Sie unter Python-Stub für Delta Live Tables.

Erstellen eines Bundles auf der Grundlage einer Projektvorlage

Erstellen Sie das Bündel mithilfe der Standardpaketvorlage Azure Databricks für Python. Diese Vorlage besteht aus einem Notebook, das eine Delta Live Tables-Pipeline definiert, die Daten aus dem ursprünglichen Dataset filtert. Informationen zu Projektvorlagen für Bundle finden Sie unter Databricks Asset Bundle-Vorlagen.

Wenn Sie ein Bundle von Grund auf neu erstellen möchten, lesen Sie den Abschnitt Manuelles Erstellen eines Bundles.

Schritt 1: Einrichten der Authentifizierung

In diesem Schritt richten Sie die Authentifizierung zwischen der Databricks CLI auf Ihrem Entwicklungscomputer und Ihrem Azure Databricks-Arbeitsbereich ein. In diesem Artikel wird davon ausgegangen, dass Sie zur Authentifizierung die OAuth-U2M-Authentifizierung (User-to-Machine, Benutzer-zu-Computer) und ein entsprechendes Azure Databricks-Konfigurationsprofil namens DEFAULT verwenden möchten.

Hinweis

Die U2M-Authentifizierung eignet sich für das Testen dieser Schritte in Echtzeit. Bei vollständig automatisierten Workflows empfiehlt Databricks stattdessen die Verwendung der OAuth-M2M-Authentifizierung (Machine-to-Machine, Computer-zu-Computer). Lesen Sie die Anweisungen zur Einrichtung der M2M-Authentifizierung unter Authentifizierung.

  1. Verwenden Sie die Databricks CLI, um die OAuth-Tokenverwaltung lokal zu initiieren, indem Sie den folgenden Befehl für jeden Zielarbeitsbereich ausführen.

    Ersetzen Sie <workspace-url> im folgenden Befehl durch Ihre arbeitsbereichsspezifische Azure Databricks-URL, z. B. https://adb-1234567890123456.7.azuredatabricks.net.

    databricks auth login --host <workspace-url>
    
  2. Die Databricks-CLI fordert Sie auf, die von Ihnen eingegebenen Informationen als Azure Databricks-Konfigurationsprofil zu speichern. Drücken Sie die EINGABETASTE (Enter), um den vorgeschlagenen Profilnamen zu übernehmen, oder geben Sie den Namen eines neuen oder bereits vorhandenen Profils ein. Ist bereits ein Profil mit dem gleichen Namen vorhanden, wird es mit den von Ihnen eingegebenen Informationen überschrieben. Sie können Profile verwenden, um Ihren Authentifizierungskontext schnell über mehrere Arbeitsbereiche hinweg zu wechseln.

    Um eine Liste vorhandener Profile abzurufen, führen Sie in der Databricks-CLI den Befehl databricks auth profiles in einem separaten Terminal oder in einer separaten Eingabeaufforderung aus. Um die vorhandenen Einstellungen eines bestimmten Profils anzuzeigen, können Sie den Befehl databricks auth env --profile <profile-name> ausführen.

  3. Führen Sie in Ihrem Webbrowser die Anweisungen auf dem Bildschirm aus, um sich bei Ihrem Azure Databricks-Arbeitsbereich anzumelden.

  4. Führen Sie einen der folgenden Befehle aus, um den aktuellen OAuth-Tokenwert eines Profils und den bevorstehenden Ablaufzeitstempel des Tokens anzuzeigen:

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

    Wenn Sie über mehrere Profile mit demselben --host-Wert verfügen, müssen Sie möglicherweise die Optionen --host und -p zusammen angeben, damit die Databricks CLI die richtigen übereinstimmenden Informationen des OAuth-Tokens ermitteln kann.

Schritt 2: Erstellen des Pakets

Initialisieren Sie ein Bundle mit der standardmäßigen Python-Bundle-Projektvorlage.

  1. Verwenden Sie Ihr Terminal oder die Eingabeaufforderung, um zu einem Verzeichnis auf Ihrem lokalen Entwicklungscomputer zu wechseln, welches das generierte Bündel der Vorlage enthält.

  2. Verwenden Sie die Databricks CLI, um den Befehl bundle init auszuführen:

    databricks bundle init
    
  3. Übernehmen Sie für Template to use den Standardwert default-python, indem Sie Enter drücken.

  4. Lassen Sie für Unique name for this project, den Standardwert von my_project, oder geben Sie einen anderen Wert ein, und drücken Sie dann Enter. Dadurch wird der Name des Stammverzeichnisses für dieses Bündel bestimmt. Dieses Stammverzeichnis wird in Ihrem aktuellen Arbeitsverzeichnis erstellt.

  5. Wählen Sie für Include a stub (sample) notebook no aus, und drücken Sie Enter. Dadurch wird die Databricks CLI angewiesen, zu diesem Zeitpunkt kein Beispielnotizbuch hinzuzufügen, da das mit dieser Option verknüpfte Beispielnotebook keinen Delta Live Tables-Code enthält.

  6. Behalten Sie für Include a stub (sample) DLT pipeline den Standardwert yes bei, indem Sie Enter drücken. Dadurch wird die Databricks CLI angewiesen, ein Beispielnotebook mit Delta Live Tables-Code hinzuzufügen.

  7. Wählen Sie für Include a stub (sample) Python package no aus, und drücken Sie Enter. Damit wird die Databricks CLI angewiesen, Ihrem Paket Beispiel-Python-Wheel-Paketdateien und zugehörige Buildanweisungen hinzuzufügen.

Schritt 3: Erkunden des Pakets

Wechseln Sie in das Stammverzeichnis des neu erstellten Bundles, um die von der Vorlage erzeugten Dateien anzuzeigen. Von besonderem Interesse sind die folgenden Dateien:

  • databricks.yml: Diese Datei gibt den programmgesteuerten Namen des Pakets an, enthält einen Verweis auf die Pipelinedefinition und gibt Einstellungen für den Zielarbeitsbereich an.
  • resources/<project-name>_job.yml und resources/<project-name>_pipeline.yml: Diese Dateien definieren den Auftrag, der eine Pipelineaktualisierungsaufgabe enthält, und die Einstellungen der Pipeline.
  • src/dlt_pipeline.ipynb: Bei dieser Datei handelt es sich um ein Notebook, das bei der Ausführung die Pipeline ausführt.

Zum Anpassen von Pipelines entsprechen die Zuordnungen innerhalb einer Pipelinedeklaration der Anforderungsnutzlast des Erstellungsvorgangs gemäß der Definition in POST /api/2.0/pipelines im REST-API-Verweis, ausgedrückt im YAML-Format.

Schritt 4: Überprüfen der Bundlekonfigurationsdatei des Projekts

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

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den bundle validate-Befehl wie folgt 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 5: Bereitstellen des lokalen Projekts im Remotearbeitsbereich

In diesem Schritt stellen Sie das lokale Notebook in Ihrem Azure Databricks-Remotearbeitsbereich bereit und erstellen die Delta Live Tables-Pipeline in Ihrem Arbeitsbereich.

  1. Verwenden Sie im Bündelstamm die Databricks CLI, um den bundle deploy-Befehl wie folgt auszuführen:

    databricks bundle deploy -t dev
    
  2. Überprüfen Sie, ob das lokale Notebook bereitgestellt wurden: Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Arbeitsbereich.

  3. Klicken Sie in den Ordner Benutzer ><your-username>> .bundle ><project-name>> dev > files > src. Das Notebook sollte sich in diesem Ordner befinden.

  4. Überprüfen Sie, ob die Pipeline erstellt wurde: Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Delta Live Tables.

  5. Klicken Sie auf der Registerkarte Delta Live Tables auf [dev <your-username>] <project-name>_pipeline.

Wenn Sie nach diesem Schritt Änderungen an Ihrem Bundle vornehmen, sollten Sie die Schritte 4 bis 5 wiederholen, um zu überprüfen, ob Ihre Bundlekonfiguration noch gültig ist, und dann das Projekt erneut bereitstellen.

Schritt 6: Ausführen des bereitgestellten Projekts

In diesem Schritt lösen Sie eine Ausführung der Delta Live Tables-Pipeline in Ihrem Arbeitsbereich über die Befehlszeile aus.

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den Befehl bundle runwie folgt auszuführen, wobei Sie <project-name> durch den Namen des Projekts aus Schritt 2 ersetzen:

    databricks bundle run -t dev <project-name>_pipeline
    
  2. Kopieren Sie den Wert von Update URL, der in Ihrem Terminal angezeigt wird, und fügen Sie ihn in Ihren Webbrowser ein, um Ihren Azure Databricks-Arbeitsbereich zu öffnen.

  3. Nach erfolgreichem Abschluss der Pipeline klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf die Ansicht taxi_raw und die materialisierte Ansicht filtered_taxis, um die Details anzuzeigen.

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

Schritt 7: Bereinigen

In diesem Schritt löschen Sie das bereitgestellte Notebook und die Pipeline aus Ihrem Arbeitsbereich.

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den Befehl bundle destroy wie folgt auszuführen:

    databricks bundle destroy -t dev
    
  2. Bestätigen Sie die Anforderung zum Löschen der Pipeline: 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 Löschanforderung für das Notebook: Wenn Sie aufgefordert werden, den zuvor bereitgestellten Ordner und alle seine Dateien dauerhaft zu löschen, geben Sie y ein und drücken Sie Enter.

  4. Wenn Sie das Paket auch von Ihrem Entwicklungscomputer löschen möchten, können Sie jetzt das lokale Verzeichnis aus Schritt 2 löschen.

Hinzufügen einer vorhandenen Pipelinedefinition zu einem Bündel

Sie können eine vorhandene Delta Live Tables-Pipelinedefinition als Grundlage verwenden, um eine neue Pipeline in einer Bündelkonfigurationsdatei zu definieren. Um eine vorhandene Pipeline-Definition zu erhalten, können Sie sie mithilfe der Benutzeroberfläche manuell abrufen oder sie programmgesteuert mithilfe der Databricks CLI generieren.

Abrufen einer vorhandenen Pipeline-Definition mithilfe der Benutzeroberfläche

Um die YAML-Darstellung einer bestehenden Pipeline-Definition aus der Azure Databricks Workspace UI zu erhalten:

  1. Klicken Sie auf der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Workflows.

  2. Klicken Sie auf der Registerkarte Delta Live Tables auf den Link Name für Ihre Pipeline.

  3. Klicken Sie neben der Schaltfläche Entwicklung auf das Drei-Punkte-Menu und dann auf Einstellungen von YaML anzeigen.

  4. Kopieren Sie die YAML der Pipeline-Definition im Dialog Pipeline-Einstellungen YAML in Ihre lokale Zwischenablage, indem Sie auf das Kopiersymbol klicken.

  5. Fügen Sie die kopierte YAML in die databricks.yml-Datei Ihres Bundles ein oder erstellen Sie eine Konfigurationsdatei für Ihre Pipeline in der resources-Datei Ihres Bundle-Projekts und referenzieren Sie diese in Ihrer databricks.yml-Datei. Siehe Ressourcen.

  6. Laden Sie alle Python-Dateien und -Notebooks herunter und fügen Sie sie dem Projektquelltext des Bundles hinzu. In der Regel befinden sich Bundle-Artefakte im src Verzeichnis in einem Bundle.

    Tipp

    Sie können ein vorhandenes Notebook aus einem Azure Databricks-Arbeitsbereich in das .ipynb Format exportieren, in dem Sie in der Azure Databricks-Notebook-Benutzeroberfläche auf File > Export > IPython Notebook klicken.

    Stellen Sie nach dem Hinzufügen Ihrer Notebooks, Python-Dateien und anderen Artefakte zum Bündel sicher, dass Ihre Pipelinedefinition korrekt auf diese verweist. Zum Beispiel für ein Notebook mit dem Namen hello.ipynb, das sich im Verzeichnis src/ des Bundles befindet:

    resources:
      pipelines:
        hello-pipeline:
          name: hello-pipeline
          libraries:
            - notebook:
                path: ../src/hello.ipynb
    

Generieren Sie eine vorhandenen Pipeline-Definition mithilfe der Databricks CLI

So erzeugen Sie programmgesteuert eine Bundle-Konfiguration für eine vorhandene Pipeline:

  1. Rufen Sie die ID der vorhandenen Pipeline über das seitliche Fenster Pipeline-Details der Pipeline in der Benutzeroberfläche ab, oder verwenden Sie den Databricks-CLI-Befehl databricks pipelines list-pipelines.

  2. Führen Sie den bundle generate pipeline Befehl Databricks CLI aus, und legen Sie die Pipeline-ID fest:

    databricks bundle generate pipeline --existing-pipeline-id 6565621249
    

    Mit diesem Befehl wird eine Bundle-Konfigurationsdatei für die Pipeline im resources-Ordner des Bundles erstellt und es werden alle referenzierten Artefakte in den src-Ordner heruntergeladen.

    Tipp

    Wenn Sie zuerst bundle deployment bind verwenden, um eine Ressource in einem Bundle an eine im Arbeitsbereich zu binden, wird die Ressource im Arbeitsbereich auf der Grundlage der Konfiguration aktualisiert, die in dem Bundle definiert ist, an das sie nach der nächsten bundle deploy gebunden ist. Weitere Informationen über bundle deployment bind finden Sie unter Binden von Bundle-Ressourcen.