Entwickeln eines Auftrags in Azure Databricks mithilfe von 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. Aufträge. Sie können auch Pakete verwenden, um Delta Live Tables-Pipelines programmgesteuert zu verwalten und mit MLOps-Stapeln zu arbeiten. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenbundles?

In diesem Artikel werden Schritte beschrieben, die Sie über ein lokales Entwicklungssetup ausführen können, um ein Bündel zu verwenden, das einen Auftrag programmgesteuert verwaltet. Weitere Informationen finden Sie unter Einführung in Azure Databricks-Workflows.

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

Zusätzlich zur Verwendung der Databricks CLI zum Ausführen eines Auftrags, der mit einem Bundle bereitgestellt wurde, können Sie diese Aufträge auch auf der Benutzeroberfläche für Azure Databricks-Aufträge anzeigen und ausführen. Weitere Informationen finden Sie unter Anzeigen und Ausführen eines mit Databricks-Ressourcenbundle erstellten Auftrags.

Anforderungen

  • Databricks CLI-Version 0.218 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?.

Entscheidung: Paket mithilfe einer Vorlage oder manuell erstellen

Entscheiden Sie, ob Sie das Paket mithilfe einer Vorlage oder manuell erstellen möchten:

Erstellen des Bündels mithilfe einer Vorlage

In diesen Schritten erstellen Sie das Paket mithilfe der standardmäßigen Azure Databricks-Paketvorlage für Python, die aus einem Notebook oder Python-Code besteht, zusammen mit der Definition eines Auftrags für die Ausführung. Sie überprüfen dann die Pipeline, stellen sie bereit und führen der bereitgestellte Auftrag in Ihrem Azure Databricks-Arbeitsbereich aus.

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

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. 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 Dataricks 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. Wenn Ihr Bündel ein Beispielnotebook enthalten soll, behalten Sie für Include a stub (sample) notebook den Standardwert von yes bei, indem Sie Enter drücken. Dadurch wird ein Beispielnotebook im src Verzeichnis in Ihrem Bündel erstellt.

  6. Wählen Sie für Include a stub (sample) DLT pipelineno aus, und drücken Sie Enter. Dadurch wird die Databricks CLI angewiesen, keine Delta Live Tables-Pipeline in Ihrem Bündel zu definieren.

  7. Wählen Sie für Include a stub (sample) Python packageno 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

Um die von der Vorlage generierten Dateien anzuzeigen, wechseln Sie zum Stammverzeichnis Ihres neu erstellten Bündels, und öffnen Sie dieses Verzeichnis mit Ihrer bevorzugten IDE, z. B. Visual Studio Code. Zu den Dateien von besonderem Interesse gehören:

  • databricks.yml: Diese Datei gibt den programmgesteuerten Namen des Bündels an, enthält einen Verweis auf die Auftragsdefinition und gibt Einstellungen für den Zielarbeitsbereich an.
  • resources/<project-name>_job.yml: Diese Datei gibt die Einstellungen des Auftrags an.
  • src/notebook.ipynb: Diese Datei ist ein Notebook, das beim Ausführen einfach eine RDD initialisiert, die die Zahlen 1 bis 10 enthält.

Beim Anpassen von Aufträgen stimmen die Zuordnungen innerhalb einer Auftragsdeklaration mit den Anforderungsnutzdaten des Erstellungsvorgangs für Aufträge überein, wie in POST /api/2.1/jobs/create im Verweis auf die REST-API definiert, der im YAML-Format ausgedrückt wird.

Tipp

Sie können die Einstellungen für neue Auftragscluster in Bundles definieren, kombinieren und außer Kraft setzen, indem Sie die unter Außerkraftsetzen von Clustereinstellungen in Databricks-Ressourcenbundles beschriebenen Techniken anwenden.

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 JSON-Darstellung 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 die das lokale Notebook in Ihrem Azure Databricks-Remotearbeitsbereich bereit und erstellen dort den Azure Databricks-Auftrag.

  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 der Auftrag erstellt wurde: Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Workflows.

  5. Klicken Sie auf der Registerkarte Aufträge auf [dev <your-username>] <project-name>_job.

  6. Klicken Sie auf die Registerkarte Aufgaben. Es sollte eine Aufgabe vorhanden sein: notebook_task.

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 führen Sie den Azure Databricks-Auftrag in Ihrem Arbeitsbereich aus.

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

    databricks bundle run -t dev <project-name>_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 auf Ihren Azure Databricks-Arbeitsbereich, nachdem die Auftragsaufgabe erfolgreich abgeschlossen wurde und eine grüne Titelleiste anzeigt, und klicken Sie auf die Auftragsaufgabe, um die Ergebnisse 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 den Auftrag aus Ihrem Arbeitsbereich.

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den bundle destroy-Befehl wie folgt 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 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.

Sie haben das Ende der Schritte zum Erstellen eines Pakets mithilfe einer Vorlage erreicht.

Manuelles Erstellen des Bündels

In diesen Schritten erstellen Sie das Paket von Grund auf neu. Dieses einfache Paket besteht aus zwei Notebooks und der Definition eines Azure Databricks-Auftrags, um sie auszuführen. Anschließend überprüfen Sie die bereitgestellten Notebooks aus dem Auftrag in Ihrem Azure Databricks-Arbeitsbereich, stellen sie bereit und führen sie aus. Mit diesen Schritten wird der Schnellstart mit dem Titel Erstellen Ihres ersten Workflows mit einem Azure Databricks-Auftrag automatisiert.

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 zum leeren Verzeichnis in Ihrem Terminal, oder öffnen Sie das leere Verzeichnis in Ihrer integrierten Entwicklungsumgebung (IDE).

Tipp

Ihr leeres Verzeichnis könnte einem geklonten Repository zugeordnet sein, das von einem Git-Anbieter verwaltet wird. Dadurch können Sie Ihr Bundle mit externer Versionskontrolle verwalten und einfacher gemeinsam mit anderen Entwicklern und IT-Experten an Ihrem Projekt arbeiten. Um diese Demonstration zu vereinfachen, wird hier jedoch kein geklontes Repository verwendet.

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 Notebook erhält eine Liste mit den beliebtesten Babynamen seit dem Jahr 2007 aus den öffentlichen Datenquellen des New York State Department of Health. Sie finden diese Liste auf der Website des Departments unter Baby Names: Trending by Name: Beginning 2007. Dieses erste Notebook speichert diese Daten dann im Ordner FileStore Ihres Azure Databricks-Arbeitsbereichs in DBFS. 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 Notebook, eine Datei namens 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/myeu-hzra/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("dbfs:/FileStore/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("dbfs:/FileStore/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").rdd.map(lambda row : row[0]).collect()
    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 Unterstützung für YAML-Dateien und JSON-Schemadateien bereitstellt, können Sie Ihre IDE nicht nur zum Erstellen der Bündelkonfigurations-Schemadatei nutzen, sondern auch zum Überprüfen der Syntax und Formatierung der Bündelkonfigurationsdatei Ihres Projekts und wie folgt zum Bereitstellen von Codeabschlusshinweisen. Beachten Sie, dass die Bündelkonfigurationsdatei, die Sie später in Schritt 5 erstellen, YAML-basiert ist, die Bündelkonfigurations-Schemadatei in diesem Schritt JSON-basiert.

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. Generieren Sie beispielsweise wie folgt eine Datei namens „bundle_config_schema.json“ im aktuellen Verzeichnis:

    databricks bundle schema > bundle_config_schema.json
    
  3. Beachten Sie, dass Sie später in Schritt 5 den folgenden Kommentar am Anfang der Bündelkonfigurationsdatei hinzufügen, um Ihre Bündelkonfigurationsdatei der angegebenen JSON-Schemadatei zuzuordnen:

    # 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 der Databricks-Ressourcenbundlekonfiguration, indem Sie die Databricks-CLI verwenden, um den Befehl bundle schema auszuführen und die Ausgabe an eine JSON-Datei umzuleiten. Generieren Sie beispielsweise wie folgt eine Datei namens „bundle_config_schema.json“ im aktuellen Verzeichnis:

    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. Beachten Sie, dass Sie später in Schritt 5 PyCharm verwenden, 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. Generieren Sie beispielsweise wie folgt eine Datei namens „bundle_config_schema.json“ im aktuellen Verzeichnis:

    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. Beachten Sie, dass Sie später in Schritt 5 IntelliJ IDEA verwenden, um eine Bündelkonfigurationsdatei zu erstellen oder zu öffnen. Grundsätzlich heißt diese Datei databricks.yml.

Schritt 4: 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 5: Hinzufügen einer Konfigurationsdatei für Bündeleinstellungen zum Projekt

In diesem Schritt definieren Sie, wie Sie die beiden Notebooks bereitstellen und ausführen möchten. 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 Bündelkonfigurationsdatei in Ihrem Projekt.

  1. Erstellen Sie aus dem Stammverzeichnis die Bündelkonfigurationsdatei, eine Datei namens 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>

Beim Anpassen von Aufträgen stimmen die Zuordnungen innerhalb einer Auftragsdeklaration mit den Anforderungsnutzdaten des Erstellungsvorgangs für Aufträge überein, wie in POST /api/2.1/jobs/create im Verweis auf die REST-API definiert, der im YAML-Format ausgedrückt wird.

Tipp

Sie können die Einstellungen für neue Auftragscluster in Bundles definieren, kombinieren und außer Kraft setzen, indem Sie die unter Außerkraftsetzen von Clustereinstellungen in Databricks-Ressourcenbundles beschriebenen Techniken anwenden.

Schritt 6: Überprüfen der Bündelkonfigurationsdatei 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 JSON-Darstellung 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 7: Bereitstellen des lokalen Projekts im Remotearbeitsbereich

In diesem Schritt stellen Sie die beiden lokalen Notebooks in Ihrem Azure Databricks-Remotearbeitsbereich bereit und erstellen dort den Azure Databricks-Auftrag.

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

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

  3. Klicken Sie in den Ordner Benutzer ><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 Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Workflows.

  5. Klicken Sie auf der Registerkarte Aufträge auf etrieve-filter-baby-names-job.

  6. 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 8: 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 9: 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 bundle destroy-Befehl wie folgt 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.

Hinzufügen einer vorhandenen Auftragsdefinition zu einem Bündel

Sie können eine vorhandene Auftragsdefinition als Grundlage verwenden, um einen neuen Auftrag in einer Bündelkonfigurationsdatei zu definieren. Führen Sie dazu folgende Schritte aus.

Hinweis

Mit den folgenden Schritten wird ein neuer Auftrag erstellt, der die gleichen Einstellungen wie der vorhandene Auftrag aufweist. Der neue Auftrag hat jedoch eine andere Auftrags-ID als der vorhandene Auftrag. Sie können eine vorhandene Auftrags-ID nicht automatisch in ein Bündel importieren.

Schritt 1: Abrufen der vorhandenen Auftragsdefinition im YAML-Format

Verwenden Sie in diesem Schritt die Benutzeroberfläche des Azure Databricks-Arbeitsbereichs, um die YAML-Darstellung der vorhandenen Auftragsdefinition abzurufen.

  1. Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Workflows.
  2. Klicken Sie auf der Registerkarte Aufträge auf den Link mit dem Namen des Auftrags.
  3. Klicken Sie neben der Schaltfläche Jetzt ausführen auf die Auslassungspunkte, und klicken Sie dann auf YAML anzeigen.
  4. Kopieren Sie auf der Registerkarte Erstellen den YAML-Code der Auftragsdefinition in die lokale Zwischenablage, indem Sie auf Kopieren klicken.

Schritt 2: Hinzufügen der Auftragsdefinition im YAML-Format zu einer Bündelkonfigurationsdatei

Fügen Sie in Ihrer Bündelkonfigurationsdatei den YAML-Code, den Sie aus dem vorherigen Schritt kopiert haben, folgendermaßen zu einem der folgenden Speicherorte hinzu, die mit <job-yaml-can-go-here> in Ihren Bündelkonfigurationsdateien gekennzeichnet sind:

resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      <job-yaml-can-go-here>

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      jobs:
        <some-unique-programmatic-identifier-for-this-job>:
          <job-yaml-can-go-here>

Schritt 3: Hinzufügen von Notebooks, Python-Dateien und anderen Artefakten zum Bündel

Alle Python-Dateien und Notebooks, auf die im vorhandenen Auftrag verwiesen wird, sollten in die Quellen des Bündels verschoben werden.

Um eine bessere Kompatibilität mit Bündeln zu gewährleisten, sollten Notebooks das IPython-Notebookformat (.ipynb) verwenden. Wenn Sie das Bündel lokal entwickeln, können Sie ein vorhandenes Notebook aus einem Azure Databricks-Arbeitsbereich in das .ipynb-Format exportieren, indem Sie auf der Benutzeroberfläche des Azure Databricks-Notebooks auf Datei > Exportieren > IPython-Notebook klicken. Das heruntergeladene Notebook sollten Sie dann in das src/-Verzeichnis in Ihrem Bündel einfügen.

Nachdem Sie Notebooks, Python-Dateien und andere Artefakte zum Bündel hinzugefügt haben, stellen Sie sicher, dass ihre Auftragsdefinition darauf verweist. Für ein Notebook mit dem Dateinamen hello.ipynb, das sich in einem src/.Verzeichnis befindet, und das src/-Verzeichnis wiederum befindet sich im selben Ordner wie die Bündelkonfigurationsdatei, die auf das src/-Verzeichnis verweist, könnte die Auftragsdefinition beispielsweise wie folgt ausgedrückt werden:

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
      - task_key: hello-task
        notebook_task:
          notebook_path: ./src/hello.ipynb

Schritt 4: Überprüfen, Bereitstellen und Ausführen des neuen Auftrags

  1. Überprüfen Sie, ob die Konfigurationsdateien des Bündels syntaktisch korrekt sind, indem Sie den folgenden Befehl ausführen:

    databricks bundle validate
    
  2. Stellen Sie das Bündel mit dem folgenden Befehl bereit. Ersetzen Sie in diesem Befehl <target-identifier> durch den eindeutigen programmgesteuerten Bezeichner für das Ziel aus der Bündelkonfiguration:

    databricks bundle deploy -t <target-identifier>
    
  3. Führen Sie den Auftrag mit dem folgenden Befehl aus.

    databricks bundle run -t <target-identifier> <job-identifier>
    
    • Ersetzen Sie <target-identifier> durch den eindeutigen programmgesteuerten Bezeichner für das Ziel aus der Bündelkonfiguration.
    • Ersetzen Sie <job-identifier> durch den eindeutigen programmgesteuerten Bezeichner für den Auftrag aus der Bundlekonfiguration.

Konfigurieren eines Auftrags, der serverloses Computing verwendet

Wichtig

Serverloses Computing für Workflows befindet sich in der Public Preview. Informationen zur Berechtigung und Aktivierung finden Sie unter Aktivieren der Public Preview von serverlosem Computing.

Die folgenden Beispiele veranschaulichen Bundlekonfigurationen zum Erstellen eines Auftrags, der serverloses Computing verwendet.

Wenn Sie serverloses Computing verwenden möchten, um einen Auftrag auszuführen, der Notebookaufgaben enthält, entfernen Sie die job_clusters-Konfiguration aus der Bundlekonfigurationsdatei.

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

resources:
  jobs:
    retrieve-filter-baby-names-job-serverless:
      name: retrieve-filter-baby-names-job-serverless
      tasks:
        - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          notebook_task:
            notebook_path: ./filter-baby-names.py

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

Wenn Sie serverloses Computing verwenden möchten, um einen Auftrag auszuführen, der Python-Aufgaben enthält, schließen Sie die environments-Konfiguration ein.

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: serverless-python-tasks

resources:
jobs:
  serverless-python-job:
    name: serverless-job-with-python-tasks

    tasks:
      - task_key: wheel-task-1
        python_wheel_task:
          entry_point: main
          package_name: wheel_package
        environment_key: Default

    environments:
      - environment_key: Default
        spec:
          client: "1"
          dependencies:
            - workflows_authoring_toolkit==0.0.1

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

Weitere Informationen finden Sie unter Ausführen Ihres Azure Databricks-Auftrags mit serverlosem Computing für Workflows.