Manuelles Erstellen eines Pakets
In diesem Lernprogramm erstellen Sie ein Databricks Ressourcen-Bundle von Grund auf neu. Dieses einfache Paket besteht aus zwei Notebooks und der Definition eines Azure Databricks-Auftrags, um sie auszuführen. Anschließend validieren Sie den Auftrag, stellen ihn bereit und führen ihn in Ihrem Azure Databricks-Arbeitsbereich aus. Mit diesen Schritten wird der Schnellstart mit dem Titel Erstellen Ihres ersten Workflows mit einem Azure Databricks-Auftrag 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. - Konfigurierte Authentifizierung für die Databricks-CLI. Weitere Informationen finden Sie unter Authentifizierung für die Databricks CLI.
- Der Remote-Databricks-Arbeitsbereich muss die Arbeitsbereichsdateien aktiviert haben. 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.
- Erstellen oder identifizieren Sie ein leeres Verzeichnis auf Ihrem Entwicklungscomputer.
- Wechseln Sie zum leeren Verzeichnis in Ihrem Terminal, oder öffnen Sie das leere Verzeichnis in Ihrer integrierten IDE.
Tipp
Sie können auch ein Verzeichnis verwenden, das ein Repository enthält, das von einem Git-Anbieter geklont wurde. Dadurch können Sie Ihr Bundle mit externer Versionskontrolle verwalten und einfacher gemeinsam mit anderen Entwicklern und IT-Experten an Ihrem Projekt arbeiten.
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. Das erste Notebook speichert diese Daten dann in Ihrem Azure Databricks Unity Catalog-Volume namens my-volume
in einem Schema mit dem Namen default
im Katalog mit dem Namen 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.
Erstellen Sie aus dem Stammverzeichnis das erste Notebook, eine Datei namens
retrieve-baby-names.py
.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)
Erstellen Sie das zweite Notebook, eine Datei namens
filter-baby-names.py
im selben Verzeichnis.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 nicht nur zur Erstellung der Bundle-Konfigurationsschemadatei verwenden, sondern auch zur Überprüfung der Syntax und Formatierung der Bundle-Konfigurationsdatei Ihres Projekts. Während die Bundle-Konfigurationsdatei, die Sie später in Schritt 5 erstellen, YAML-basiert ist, ist die Bundle-Konfigurationsschemadatei in diesem Schritt JSON-basiert.
Visual Studio Code
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.
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 mit dem Namenbundle_config_schema.json
im aktuellen Verzeichnis:databricks bundle schema > bundle_config_schema.json
In Schritt 5 fügen Sie den folgenden Kommentar am Anfang Ihrer Bundle-Konfigurationsdatei hinzu, der Ihre Bundle-Konfigurationsdatei mit der angegebenen JSON-Schemadatei verknüpft:
# 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
Generieren Sie die JSON-Schemadatei der Databricks-Ressourcen-Bundle-Konfiguration, 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 mit dem Namenbundle_config_schema.json
im aktuellen Verzeichnis:databricks bundle schema > bundle_config_schema.json
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.
Beachten Sie, dass Sie später in Schritt 5 PyCharm verwenden, um eine Bundle-Konfigurationsdatei zu erstellen oder zu öffnen. Grundsätzlich heißt diese Datei
databricks.yml
.
IntelliJ IDEA Ultimate
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 mit dem Namenbundle_config_schema.json
im aktuellen Verzeichnis:databricks bundle schema > bundle_config_schema.json
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.
Beachten Sie, dass Sie später in Schritt 5 IntelliJ IDEA verwenden, um eine Bundle-Konfigurationsdatei 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.
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>
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 Befehldatabricks auth env --profile <profile-name>
ausführen.Führen Sie in Ihrem Webbrowser die Anweisungen auf dem Bildschirm aus, um sich bei Ihrem Azure Databricks-Arbeitsbereich anzumelden.
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 Bündelkonfigurationsdatei 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 Bundle-Konfigurationsdatei in Ihrem Projekt.
- Erstellen Sie aus dem Stammverzeichnis die Bündelkonfigurationsdatei, eine Datei namens
databricks.yml
. - 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 die Anpassung von Jobs entsprechen die Zuordnungen in einer Job-Deklaration dem Anfrage-Payload, ausgedrückt im YAML-Format, der Job-Operation create, wie in POST /api/2.1/jobs/create in der REST-API-Referenz dokumentiert.
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.
Verwenden Sie die Databricks CLI, um den Befehl
bundle validate
folgendermaßen auszuführen:databricks bundle validate
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 7: Bereitstellen des lokalen Projekts im Remotearbeitsbereich
In diesem Schritt stellen Sie die beiden lokalen Notebooks in Ihrem Azure Databricks-Remote-Arbeitsbereich bereit und erstellen dort den Azure Databricks-Auftrag.
Verwenden Sie die Databricks CLI, um den
bundle deploy
-Befehl wie folgt auszuführen:databricks bundle deploy -t development
Überprüfen Sie, ob die beiden lokalen Notebooks bereitgestellt wurden: Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Arbeitsbereich.
Klicken Sie in den Ordner Benutzer >
<your-username>
> .bundle > baby-names > Entwicklung > Dateien. Die beiden Notizbücher sollten sich in diesem Ordner befinden.Überprüfen Sie, ob der Auftrag erstellt wurde: Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Workflows.
Klicken Sie auf der Registerkarte Aufträge auf etrieve-filter-baby-names-job.
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.
Verwenden Sie die Databricks CLI, um den Befehl
bundle run
folgendermaßen auszuführen:databricks bundle run -t development retrieve-filter-baby-names-job
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.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.
Verwenden Sie die Databricks CLI, um den
bundle destroy
-Befehl wie folgt auszuführen:databricks bundle destroy
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 dannEnter
.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 dannEnter
.
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:
- Klicken Sie in der Seitenleiste Ihres Azure Databricks-Arbeitsbereichs auf Katalog.
- Klicken Sie auf DBFS durchsuchen.
- Klicken Sie auf den Ordner FileStore.
- Klicken Sie auf den Dropdownpfeil neben babynames.csv dann auf Löschen.
- 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.