Planen und Koordinieren von Workflows
Databricks Workflows verfügt über ein Tool, mit dem Sie Datenverarbeitungsaufgaben in Azure Databricks planen und orchestrieren können. Sie verwenden Databricks Workflows zum Konfigurieren von Databricks-Aufträgen.
In diesem Artikel werden Konzepte und Auswahlmöglichkeiten für die Verwaltung von Produktionsworkloads mithilfe von Databricks Jobs vorgestellt.
Was sind Databricks-Aufträge?
Ein Auftrag ist die primäre Einheit für die Planung und Orchestrierung von Produktionsworkloads in Azure Databricks. Aufträge bestehen aus mindestens einer Aufgabe. Mit Aufgaben und Aufträgen können Sie Folgendes konfigurieren und bereitstellen:
- Benutzerdefinierte Logik, einschließlich Spark, SQL, OSS Python, ML und beliebigem Code.
- Berechnen von Ressourcen mit benutzerdefinierten Umgebungen und Bibliotheken.
- Zeitpläne und Trigger für die Ausführung von Workloads.
- Bedingte Logik für den Kontrollfluss zwischen Aufgaben.
Aufträge bieten einen prozeduralen Ansatz zur Definition von Beziehungen zwischen Aufgaben. Delta Live Tables-Pipelines bieten einen deklarativen Ansatz zum Definieren von Beziehungen zwischen Datasets und Transformationen. Sie können Delta Live Tables-Pipelines als Aufgabe in einen Auftrag einschließen. Siehe Delta Live Tables-Pipeline-Aufgabe für Jobs.
Die Komplexität der Aufträge kann stark variieren – von einer einzelnen Aufgabe, die ein Databricks-Notebook ausführt, bis hin zu Tausenden von Aufgaben, die mit bedingter Logik und Abhängigkeiten ausgeführt werden.
Wie kann ich Aufträge konfigurieren und ausführen?
Sie können einen Auftrag über die Benutzeroberfläche, die CLI oder durch Aufrufen der Auftrags-API erstellen und ausführen. Sie können einen fehlerhaften oder abgebrochenen Auftrag mithilfe der Benutzeroberfläche oder API reparieren und erneut ausführen. Sie können die Ergebnisse der Auftragsausführung mithilfe der Benutzeroberfläche, der CLI, der API und von Benachrichtigungen (z. B. E-Mail-, Webhookziel- oder Slack-Benachrichtigungen) überwachen.
Wenn Sie einen Infrastructure-as-Code (IaC)-Ansatz für die Konfiguration und Orchestrierung Ihrer Jobs bevorzugen, verwenden Sie Databricks Asset Bundles (DABs). Bundles können YAML-Definitionen von Aufträgen und Aufgaben enthalten, werden über die Databricks-CLI verwaltet und können in verschiedenen Ziel-Arbeitsbereiche (z. B. Entwicklung, Staging und Produktion) gemeinsam genutzt und ausgeführt werden. Informationen zur Verwendung von DABs zum Konfigurieren und Orchestrieren Ihrer Aufträge finden Sie unter Databricks Asset Bundles.
Informationen zum Verwenden der Databricks CLI finden Sie unter Was ist die Databricks-CLI?. Informationen zur Verwendung der Auftrags-API finden Sie unter Auftrags-API.
Welche Mindestkonfiguration ist für einen Auftrag erforderlich?
Für alle Aufträge in Azure Databricks ist Folgendes erforderlich:
- Quellcode (z. B. ein Databricks-Notebook), der auszuführende Logik enthält.
- Eine Computeressource zum Ausführen der Logik. Bei der Computeressource kann es sich um serverloses Computing, klassisches Job Compute oder All-Purpose Compute handeln. Weitere Informationen finden Sie unter Konfigurieren von Compute für Aufträge.
- Ein festgelegter Zeitplan für die Ausführung des Auftrags. Optional können Sie auf die Festlegung eines Zeitplans verzichten und den Auftrag manuell auslösen.
- Eine eindeutige Bezeichnung.
Hinweis
Wenn Sie Ihren Code in Databricks-Notebooks entwickeln, können Sie die Schaltfläche Zeitplan verwenden, um das Notebook als Auftrag zu konfigurieren. Weitere Informationen finden Sie unter Erstellen und Verwalten geplanter Notebookaufträge.
Was ist eine Aufgabe?
Eine Aufgabe stellt eine Logikeinheit in einem Auftrag dar, die als Schritt in einem Job ausgeführt wird. Aufgaben können hinsichtlich ihrer Komplexität variieren und Folgendes umfassen:
- Notebook
- Eine JAR-Datei
- SQL-Abfragen
- Eine DLT-Pipeline
- Einen anderen Auftrag
- Ablaufsteuerungsaufgaben
Sie steuern die Ausführungsreihenfolge der Aufgaben, indem Sie Abhängigkeiten zwischen den Aufgaben angeben. Sie können Aufgaben so konfigurieren, dass sie nacheinander oder parallel ausgeführt werden.
Aufträge interagieren mit Statusinformationen und Metadaten von Aufgaben, der Aufgabenbereich ist jedoch isoliert. Sie können Aufgabenwerte (task-Werte) verwenden, um den Kontext zwischen geplanten Vorgängen zu teilen. Siehe Verwenden von Aufgabenwerten zur Weitergabe von Informationen zwischen Aufgaben..
Welche Ablaufsteuerungsoptionen sind für Aufträge verfügbar?
Wenn Sie Aufträge und Aufgaben innerhalb von Aufträgen konfigurieren, können Sie Einstellungen anpassen, die die Ausführung des gesamten Auftrags und der einzelnen Aufgaben steuern. Die Optionen sind:
- Trigger
- Retries
- Bedingte „Run if“-Aufgaben
- Bedingte „If/else“-Aufgaben
- Für alle Aufgaben
- Schwellenwerte für Dauer
- Einstellung für Parallelität
Triggertypen
Sie müssen einen Triggertyp angeben, wenn Sie einen Auftrag konfigurieren. Die folgenden Triggertypen sind verfügbar:
Sie können Ihren Auftrag auch manuell auslösen, diese Vorgehensweise ist jedoch normalerweise nur für bestimmte Anwendungsfälle vorgesehen, z. B.:
- Sie verwenden ein externes Orchestrierungstool zum Auslösen von Aufträgen mithilfe von REST-API-Aufrufen.
- Sie haben einen Auftrag, der nur selten ausgeführt wird und manuelle Eingriffe zur Validierung oder Lösung von Datenqualitätsproblemen erfordert.
- Sie führen eine Workload aus, die einmalig oder nur ein paar Mal ausgeführt werden muss (z. B. eine Migration).
Siehe Trigger-Typen für Databricks-Jobs.
Wiederholungsversuche
Der Wert „Wiederholungsversuche“ gib an, wie oft eine bestimmte Aufgabe erneut ausgeführt werden soll, wenn die Aufgabe mit einer Fehlermeldung fehlschlägt. Fehler sind oft nur vorübergehend und werden durch einen Neustart behoben. Einige Features in Azure Databricks wie die Schemaentwicklung mit strukturiertem Streaming setzen voraus, dass Sie Aufträge mit Wiederholungen ausführen, um die Umgebung zurückzusetzen und die weitere Ausführung eines Workflows zu ermöglichen.
Wenn Sie Wiederholungsversuche für eine Aufgabe angeben, wird die Aufgabe bis zur angegebenen Anzahl von Wiederholungen neu gestartet, wenn bei ihrer Ausführung ein Fehler auftritt. Nicht alle Auftragskonfigurationen unterstützen Aufgabenwiederholungen. Siehe Festlegen einer Wiederholungsrichtlinie.
Bei der Ausführung im Triggermodus „Kontinuierlich“ führt Databricks automatisch Wiederholungsversuche mit exponentiellem Backoff aus. Siehe Wie werden Fehler bei fortlaufenden Aufträgen behandelt?.
Bedingte „Run if“-Aufgaben
Sie können den Aufgabentyp Run if verwenden, um Bedingungen für spätere Aufgaben basierend auf dem Ergebnis anderer Aufgaben anzugeben. Sie fügen Ihrem Auftrag Aufgaben hinzu und geben vom Upstream abhängige Vorgänge an. Basierend auf dem Status dieser Aufgaben können Sie die Ausführung einer oder mehrerer nachgeschalteter Aufgaben (Downstreamaufgaben) konfigurieren. Aufträge unterstützen die folgenden Abhängigkeiten:
- Alle erfolgreich abgeschlossenen Aufgaben
- Mindestens eine erfolgreich abgeschlossene Aufgabe
- Keine fehlgeschlagene Aufgabe
- Alle Aufgaben abgeschlossen
- Mindestens eine fehlgeschlagene Aufgabe
- Alle Aufgaben fehlgeschlagen
Siehe Konfigurieren von Anordnungsbeziehungen
Bedingte „If/else“-Aufgaben
Sie können den Aufgabentyp If/else verwenden, um Bedingungen basierend auf einem bestimmten Wert anzugeben. Weitere Informationen finden Sie unter Hinzufügen von Verzweigungslogik zu einem Auftrag mit der If/Else-Aufgabe.
Aufträge unterstützen taskValues
, die Sie in Ihrer Logik definieren. Damit können Sie die Ergebnisse einer Berechnung oder den Status einer Aufgabe an die Auftragsumgebung zurückzugeben. Sie können If/else-Bedingungen für taskValues
definieren, d. h. Auftragsparameter oder dynamische Werte.
Azure Databricks unterstützt die folgenden Operanden für Bedingungen:
==
!=
>
>=
<
<=
Weitere Informationen:
- Verwenden von Aufgabenwerten zur Weitergabe von Informationen zwischen Aufgaben
- Was ist eine dynamische Wertreferenz?
- Parametrisieren von Aufträgen
Für alle Aufgaben
Verwenden Sie die For each
-Aufgabe, um eine andere Aufgabe in einer Schleife auszuführen, und dabei einen anderen Satz von Parametern an jede Iteration der Aufgabe übergeben.
Zum Hinzufügen der Aufgabe For each
zu einem Auftrag müssen zwei Aufgaben definiert werden: Die For each
-Aufgabe und eine geschachtelte Aufgabe. Die geschachtelte Aufgabe ist die Aufgabe, die für jede Iteration der For each
-Aufgabe ausgeführt werden soll, und ist einer der standardmäßigen Databricks Jobs-Aufgabentypen. Mehrere Methoden werden unterstützt, um Parameter an die geschachtelte Aufgabe zu übergeben.
Siehe Ausführen einer parametrisierten Azure Databricks-Auftragsaufgabe in einer Schleife.
Schwellenwert für Dauer
Sie können einen Schwellenwert für die Dauer angeben, damit beim Überschreiten einer festgelegten Dauer eine Warnung gesendet oder eine Aufgabe bzw. ein Auftrag beendet wird. Im Folgenden finden Sie Beispiele für die Konfiguration dieser Einstellungen:
- Sie haben Aufgaben, die dazu neigen, hängen zu bleiben und nicht mehr reagieren zu können.
- Sie müssen einen Techniker benachrichtigen, wenn eine Vereinbarung zum Servicelevel (Service Level Agreement, SLA) für einen Workflow überschritten wird.
- Sie möchten für einen Auftrag, der mit einem großen Cluster konfiguriert ist, Fehler vermeiden, um unerwartete Kosten zu vermeiden.
Siehe Konfigurieren einer erwarteten Abschlusszeit oder eines Timeouts für einen Auftrag und Konfigurieren einer erwarteten Abschlusszeit oder eines Timeouts für eine Aufgabe.
Parallelität
Die meisten Aufträge sind mit der Standardparallelität von einem gleichzeitigen Auftrag konfiguriert. Wenn eine vorherige Auftragsausführung nicht bis zum festgelegten Auslösungszeitpunkt des nächsten Auftrags abgeschlossen wurde, wird die nächste Auftragsausführung daher übersprungen.
Es gibt einige Anwendungsfälle, die eine höhere Parallelität erfordern. Für die meisten Workloads muss diese Einstellung jedoch nicht geändert werden.
Weitere Informationen zur Konfiguration der Gleichzeitigkeit finden Sie unter Databricks Jobs Warteschlangen- und Gleichzeitigkeitseinstellungen.
Wie kann ich Aufträge überwachen?
Über die Benutzeroberfläche für Aufträge können Sie Auftragsläufe, einschließlich laufender Aufträge, anzeigen. Überwachung und Beobachtung für Databricks-Aufträge.
Sie können Benachrichtigungen erhalten, wenn ein Auftrag oder eine Aufgabe gestartet oder abgeschlossen wird oder ein Fehler auftritt. Sie können Benachrichtigungen an eine oder mehrere E-Mail-Adressen oder Systemziele senden. Weitere Informationen finden Sie unter Hinzufügen von E-Mail- und Systembenachrichtigungen für Auftragsereignisse.
Systemtabellen enthalten ein lakeflow
Schema, in dem Sie Datensätze im Zusammenhang mit der Auftragsaktivität in Ihrem Konto anzeigen können. Weitere Informationen finden Sie unter Auftragssystemtabellenreferenz.
Sie können die Auftragssystemtabellen auch mit Abrechnungstabellen verknüpfen, um die Kosten von Aufträgen über Ihr Konto hinweg zu überwachen. Weitere Informationen finden Sie unter Überwachen der Kosten von Aufträgen mit Systemtabellen.
Begrenzungen
Es gelten die folgenden Einschränkungen:
- Ein Arbeitsbereich ist auf 2000 gleichzeitige Auftragsausführungen beschränkt. Wenn Sie eine Ausführung anfordern, die nicht sofort gestartet werden kann, wird eine
429 Too Many Requests
-Antwort zurückgegeben. - Die Anzahl von Aufträgen, die von einem Arbeitsbereich innerhalb einer Stunde erstellt werden können, ist auf 10000 beschränkt (einschließlich „runs submit“). Diese Beschränkung wirkt sich auch auf Aufträge aus, die mit den REST-API- und Notebook-Workflows erstellt wurden.
- Ein Arbeitsbereich kann bis zu 12.000 gespeicherte Aufträge enthalten.
- Ein Auftrag kann bis zu 100 Vorgänge enthalten.
Kann ich Workflows programmgesteuert verwalten?
Databricks verfügt über die folgenden Tools und APIs, mit denen Sie Ihre Workflows programmgesteuert planen und orchestrieren können:
- Databricks-Befehlszeilenschnittstelle
- Databricks-Ressourcenbundles
- Databricks-Erweiterung für Visual Studio Code
- Databricks SDKs
- Aufträge-REST-API
Weitere Informationen zu Entwicklertools finden Sie unter Entwicklungstools.
Workfloworchestrierung mit Apache AirFlow
Sie können Apache Airflow verwenden, um Ihre Datenworkflows zu verwalten und zu planen. Mit Airflow definieren Sie Ihren Workflow in einer Python-Datei, und Airflow verwaltet die Planung und Ausführung des Workflows. Weitere Informationen finden Sie unter Orchestrieren von Azure Databricks-Aufträgen mit Apache Airflow.
Workfloworchestrierung mit Azure Data Factory
Azure Data Factory (ADF) ist ein cloudbasierter Datenintegrationsdienst, mit dem Sie Dienste für die Speicherung, Verschiebung und Verarbeitung von Daten in automatisierten Datenpipelines kombinieren können. Sie können ADF verwenden, um einen Azure Databricks-Auftrag als Teil einer ADF-Pipeline zu orchestrieren.
ADF verfügt außerdem über integrierte Unterstützung für das Ausführen von Databricks-Notebooks, Python-Skripts oder Code, der in JAR-Dateien gepackt ist, in einer ADF-Pipeline.
Weitere Informationen zum Ausführen eines Databricks-Notebooks in einer ADF-Pipeline finden Sie unter Ausführen eines Databricks-Notebooks mit der Databricks-Notebookaktivität in Azure Data Factory sowie unter Transformieren von Daten durch Ausführen eines Databricks-Notebooks.
Weitere Informationen zum Ausführen eines Python-Skripts in einer ADF-Pipeline finden Sie unter Transformieren von Daten durch Ausführen einer Python-Aktivität in Azure Databricks.
Weitere Informationen zum Ausführen von Code, der in eine JAR-Datei gepackt ist, in einer ADF-Pipeline finden Sie unter Transformieren von Daten durch Ausführen einer JAR-Aktivität in Azure Databricks.