Aufträge

Ein Auftrag ist eine Möglichkeit, nicht interaktiven Code in einem Azure Databricks Cluster auszuführen. Beispielsweise können Sie eine ETL-Workload (Extrahieren, Transformieren und Laden) interaktiv oder nach einem Zeitplan ausführen. Sie können Aufträge auch interaktiv auf der Notebook-Benutzeroberflächeausführen.

Sie können einen Auftrag über die Benutzeroberfläche, die CLI und den Aufruf der Auftrags-API erstellen und ausführen. Sie können Die Ergebnisse der Auftragsläufe mithilfe der Benutzeroberfläche, cli, API und E-Mail-Warnungen überwachen. Dieser Artikel konzentriert sich auf die Ausführung von Auftragsaufgaben über die Benutzeroberfläche. Die anderen Methoden finden Sie unter Jobs CLI und Jobs API 2.1.

Sie können die Orchestrierung mehrerer Aufgaben in Ihrem Azure Databricks Arbeitsbereich aktivieren. Wenn die Aufgabenorchestrierung aktiviert ist, kann ein Auftrag aus einem oder mehreren Tasks bestehen, und Azure Databricks die Aufgabenorchestrierung, Clusterverwaltung, Überwachung und Fehlerberichterstattung für den Auftrag verwaltet. In einem Arbeitsbereich ohne aktivierte Aufgabenorchestrierung besteht ein Auftrag aus einer einzelnen Aufgabe. Databricks empfiehlt, die Aufgabenorchestrierung zu aktivieren, um die Erstellung, Verwaltung und Überwachung von Daten- und Machine Learning-Workflows zu vereinfachen. Informationen zum Aktivieren der Aufgabenorchestrierung finden Sie unter Anforderungen.

Sie können eine Aufgabe in einem Azure Databricks Notebook, einer Delta Live Tables-Pipeline oder einer anwendung implementieren, die in Scala, Java oder Python geschrieben wurde. Ältere Spark Submit-Anwendungen werden ebenfalls unterstützt.

Wenn die Orchestrierung mehrerer Tasks aktiviert ist, steuern Sie die Ausführungsreihenfolge von Aufgaben, indem Sie Abhängigkeiten zwischen den Aufgaben angeben. Sie können Tasks so konfigurieren, dass sie nacheinander oder parallel ausgeführt werden. Das folgende Diagramm veranschaulicht einen Workflow, der:

  1. Erfasst unformatierte Clickstreamdaten und führt die Verarbeitung aus, um die Datensätze zu sitzungsisieren.

  2. Erfasst Bestelldaten und verbindet sie mit den sitzungsisierten Clickstreamdaten, um ein vorbereitetes DataSet für die Analyse zu erstellen.

  3. Extrahiert Features aus den vorbereiteten Daten.

  4. Führt Aufgaben parallel aus, um die Features zu speichern und ein Machine Learning-Modell zu trainieren.

    Multitask-Beispielworkflow

Informationen zum Erstellen Ihres ersten Auftrags, der mehrere Aufgaben orchestrieren soll, finden Sie unter Schnellstart: Aufträge.

Wichtig

  • Aufträge können nur in einem Data Science & Engineering-Arbeitsbereich oder einem Machine Learning Arbeitsbereich erstellt werden.
  • Ein Arbeitsbereich ist auf 1.000 gleichzeitige Auftragsläufe beschränkt. Eine 429 Too Many Requests Antwort wird zurückgegeben, wenn Sie eine Ausführung anfordern, die nicht sofort gestartet werden kann.
  • Die Anzahl der Aufträge, die ein Arbeitsbereich in einer Stunde erstellen kann, ist auf 5.000 beschränkt (einschließlich "Jetzt ausführen" und "Ausführungen übermitteln"). Diese Beschränkung wirkt sich auch auf Aufträge aus, die mit den REST-API- und Notebook-Workflows erstellt wurden.

Anforderungen

Um Aufträge zu erstellen, die mehrere Aufgaben orchestrieren, muss ein Administrator die Unterstützung in der Databricks-Verwaltungskonsoleaktivieren.

Erstellen eines Auftrags

  1. Führen Sie eines der folgenden Verfahren aus:

    • Klicken Sie in der Randleiste auf Aufträge Symbolaufträge und dann auf Die Schaltfläche Auftrag erstellen.
    • Klicken Sie in der Randleiste auf Symbol erstellenErstellen, und wählen Sie im Menü Auftrag aus.

    Die Registerkarte Aufgaben wird mit dem Dialogfeld "Task erstellen" angezeigt, wenn die Orchestrierung mehrerer Aufgaben aktiviert ist. Die Registerkarte Aufgabe wird mit dem Dialogfeld Task erstellen angezeigt, wenn die Aufgabenorchestrierung nicht aktiviert ist.

    Bildschirm

  2. Ersetzen Sie Einen Namen für Ihren Auftrag hinzufügen... durch Ihren Auftragsnamen.

  3. Wenn die Orchestrierung mehrerer Aufgaben aktiviert ist, geben Sie einen Namen für die Aufgabe in das Feld Aufgabenname ein.

  4. Geben Sie den Typ der auszuführende Aufgabe an. Wählen Sie in der Dropdowngruppe Typ die Option Notebook,JAR,Spark Submit,Pythonoder Pipelineaus.

    • Notebook:Suchen Sie im Dateibrowser nach dem Notebook, klicken Sie auf den Namen des Notebooks, und klicken Sie auf Bestätigen.

    • JAR:Geben Sie die Main-Klasse an. Verwenden Sie den vollqualifizierten Namen der Klasse, die die Main-Methode enthält, z. org.apache.spark.examples.SparkPi B. . Klicken Sie dann unter Abhängige Bibliotheken auf Hinzufügen, um bibliotheken hinzuzufügen, die zum Ausführen der Aufgabe erforderlich sind. Eine dieser Bibliotheken muss die Hauptklasse enthalten.

      Weitere Informationen zu JAR-Aufgaben finden Sie unter JAR-Aufträge.

    • Spark Submit: Geben Sie im Textfeld Parameter die Hauptklasse, den Pfad zur Jar-Datei der Bibliothek und alle Argumente an, die als JSON-Array von Zeichenfolgen formatiert sind. Im folgenden Beispiel wird eine Spark-Submit-Aufgabe konfiguriert, um DFSReadWriteTest aus den Apache Spark Beispielen auszuführen:

      ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/dbfs/databricks-datasets/README.md","/FileStore/examples/output/"]
      

      Wichtig

      Es gibt mehrere Einschränkungen für Spark-Submit-Aufgaben:

      • Spark-Submit-Aufgaben können nur in neuen Clustern ausgeführt werden.
      • Spark-submit unterstützt keine automatische Clusterskalierung. Weitere Informationen zur automatischen Skalierung finden Sie unter Automatische Skalierung von Clustern.
      • Spark-submit unterstützt keine Databricks-Hilfsprogramme. Verwenden Sie stattdessen JAR-Aufgaben, um Databricks-Hilfsprogramme zu verwenden.
    • Python:Geben Sie im Textfeld Pfad den URI eines Python-Skripts im DBFS- oder Cloudspeicher ein. Beispiel: .

    • Pipeline:Wählen Sie in der Dropdown-Dropdown-Pipeline eine vorhandene Delta Live Tables-Pipeline aus.

  5. Konfigurieren Sie den Cluster, in dem der Task ausgeführt wird. Wählen Sie in der Dropdowngruppe Cluster entweder Neuer Auftragscluster oder Vorhandene All-Purpose Cluster aus.

    • Neuer Auftragscluster:Klicken Sie in der Dropdowngruppe Cluster auf Bearbeiten, und schließen Sie die Clusterkonfiguration ab.
    • Vorhandener All-Purpose Cluster:Wählen Sie in der Dropdown-Dropdowngruppe Cluster einen vorhandenen Cluster aus. Klicken Sie rechts neben dem Clusternamen und der Beschreibung auf das Symbol Externer Link, um den Cluster auf einer neuen Seite zu öffnen.

    Weitere Informationen zum Auswählen und Konfigurieren von Clustern zum Ausführen von Aufgaben finden Sie unter Tipps zur Clusterkonfiguration.

  6. Sie können Parameter für Ihre Aufgabe übergeben. Jeder Aufgabentyp hat unterschiedliche Anforderungen an das Formatieren und Übergeben der Parameter.

    • Notebook:Klicken Sie auf Hinzufügen, und geben Sie den Schlüssel und wert jedes Parameters an, der an die Aufgabe übergeben werden soll. Sie können zusätzliche Parameter überschreiben oder hinzufügen, wenn Sie eine Aufgabe mithilfe der Option Auftrag mit anderen Parametern ausführen manuell ausführen. Parameter legen den Wert des Notebookwidgets fest, das durch den Schlüssel des Parameters angegeben wird. Verwenden Sie Taskparametervariablen, um einen begrenzten Satz dynamischer Werte als Teil eines Parameterwerts zu übergeben.
    • JAR:Verwenden Sie ein Json-formatiertes Array von Zeichenfolgen, um Parameter anzugeben. Diese Zeichenfolgen werden als Argumente an die main-Methode der Main-Klasse übergeben. Weitere Informationen finden Sie unter Konfigurieren von JAR-Auftragsparametern.
    • Spark Submit-Aufgabe: Parameter werden als JSON-formatiertes Array von Zeichenfolgen angegeben. Gemäß der Apache Spark Spark-Submit-Konvention werden Parameter nach dem JAR-Pfad an die main-Methode der Hauptklasse übergeben.
    • Python:Verwenden Sie ein Json-formatiertes Zeichenfolgenarray, um Parameter anzugeben. Diese Zeichenfolgen werden als Argumente übergeben, die mithilfe des argparse-Moduls in Python analysiert werden können.
  7. Um auf zusätzliche Optionen wie abhängige Bibliotheken, Wiederholungsrichtlinie und Timeouts zuzugreifen,klicken Sie auf Erweiterte Optionen. Weitere Informationen finden Sie unter Bearbeiten einer Aufgabe.

  8. Klicken Sie auf Erstellen.

  9. Um optional den Zeitplan des Auftrags festzulegen, klicken Sie im Bereich Auftragsdetails auf Zeitplan bearbeiten. Weitere Informationen finden Sie unter Planen eines Auftrags.

  10. Um optional mehrere gleichzeitige Ausführungen desselben Auftrags zuzulassen, klicken Sie im Bereich Auftragsdetails auf Gleichzeitige Ausführungen bearbeiten. Weitere Informationen finden Sie unter Maximale Anzahl gleichzeitiger Ausführungen.

  11. Um optional E-Mail-Adressen für den Empfang von Warnungen zu Auftragsereignissen anzugeben, klicken Sie im Bereich Auftragsdetails auf Warnungen bearbeiten. Weitere Informationen finden Sie unter Warnungen.

  12. Klicken Sie zum optionalen Steuern der Berechtigungsebenen für den Auftrag im Bereich Auftragsdetails auf Berechtigungen bearbeiten. Weitere Informationen finden Sie unter Steuern des Zugriffs auf Aufträge.

Um eine weitere Aufgabe hinzuzufügen, wenn die Aufgabenorchestrierung aktiviert ist, klicken Sie unterhalb der soeben erstellten Aufgabe auf die Schaltfläche Aufgabe hinzufügen.

Ausführen eines Auftrags

  1. Klicken Sie auf der Randleiste aufAufträge Symbolaufträge.
  2. Wählen Sie einen Auftrag aus, und klicken Sie auf die Registerkarte Ausführungen. Sie können einen Auftrag sofort ausführen oder die spätere Ausführung des Auftrags planen.

Sofortiges Ausführen eines Auftrags

Um den Auftrag sofort auszuführen, klicken Sie auf die Schaltfläche Jetzt ausführen.

Tipp

Sie können einen Testlauf eines Auftrags mit einem Notebooktask ausführen, indem Sie auf Jetzt ausführenklicken. Wenn Sie Änderungen am Notebook vornehmen müssen, wird die neue Version des Notebooks automatisch ausgeführt, wenn Sie nach dem Bearbeiten des Notebooks erneut auf Jetzt ausführen klicken.

Ausführen eines Auftrags mit unterschiedlichen Parametern

Sie können Jetzt ausführen mit verschiedenen Parametern verwenden, um einen Auftrag mit unterschiedlichen Parametern oder anderen Werten für vorhandene Parameter erneut ausführen zu können.

  1. Klicken Sie neben Jetzt ausführen auf Blue Down Caret, und wählen Sie Jetzt mit anderen Parametern ausführen aus, oder klicken Sie in der Tabelle Aktive Ausführungen auf Jetzt mit anderen Parametern ausführen. Geben Sie die neuen Parameter abhängig vom Typ der Aufgabe ein.
    • Notebook:Sie können Parameter als Schlüssel-Wert-Paare oder als JSON-Objekt eingeben. In diesem Dialogfeld können Sie die Werte von Widgets festlegen.
    • JAR und spark-submit:Sie können eine Liste von Parametern oder ein JSON-Dokument eingeben. Die bereitgestellten Parameter werden mit den Standardparametern für die ausgelöste Ausführung zusammengeführt. Wenn Sie Schlüssel löschen, werden die Standardparameter verwendet. Sie können auch Taskparametervariablen für die Ausführung hinzufügen.
  2. Klicken Sie auf Ausführen.

Planen eines Auftrags

So definieren Sie einen Zeitplan für den Auftrag:

  1. Klicken Sie im Bereich Auftragsdetails auf Zeitplan bearbeiten, und legen Sie den Zeitplantyp auf Geplant fest.

  2. Geben Sie den Zeitraum, die Startzeit und die Zeitzone an. Aktivieren Sie optional das Kontrollkästchen Cron-Syntax anzeigen, um den Zeitplan in Der Cron-Syntax anzuzeigen und zu bearbeiten.

    Hinweis

    • Azure Databricks erzwingt ein Mindestintervall von 10 Sekunden zwischen nachfolgenden Durchläufen, die durch den Zeitplan eines Auftrags ausgelöst werden, unabhängig von der Konfiguration in Sekunden im Cron-Ausdruck.
    • Sie können eine Zeitzone auswählen, die die Sommerzeit oder UTC beobachtet. Wenn Sie eine Zone auswählen, die die Sommerzeit beobachtet, wird ein stündlicher Auftrag übersprungen oder scheint nach Beginn oder Ende der Sommerzeit ein oder zwei Stunden lang nicht zu starten. Um zu jeder Stunde (absolute Zeit) ausgeführt zu werden, wählen Sie UTC aus.
    • Der Auftragsplaner ist nicht für Aufträge mit geringer Latenz vorgesehen. Aufgrund von Netzwerk- oder Cloudproblemen können Auftragsläufe gelegentlich bis zu mehreren Minuten verzögert werden. In diesen Situationen werden geplante Aufträge sofort nach der Dienstverfügbarkeit ausgeführt.
  3. Klicken Sie auf Speichern.

Anhalten und Fortsetzen eines Auftragszeitplans

Um einen Auftrag anzuhalten, haben Sie dies:

  • Klicken Sie im Bereich Auftragsdetails auf Anhalten.
  • Klicken Sie im Bereich Auftragsdetails auf Zeitplan bearbeiten, und legen Sie den Zeitplantyp auf Manuell (angehalten) fest.

Legen Sie zum Fortsetzen eines angehaltenen Auftragszeitplans den Zeitplantyp aufGeplant fest.

Anzeigen von Aufträgen

Klicken Sie in der RandleisteaufAufträge SymbolAufträge. Die Liste Aufträge wird angezeigt. Auf der Seite Aufträge werden alle definierten Aufträge, die Clusterdefinition, der Zeitplan (sofern verfügbar) und das Ergebnis der letzten Ausführung aufgeführt.

Sie können Aufträge in der Liste Aufträge filtern:

  • Verwenden von Schlüsselwörtern.
  • Wählen Sie nur die Aufträge aus, die Sie besitzen.
  • Wählen Sie alle Aufträge aus, für die Sie über Zugriffsberechtigungen verfügen. Für den Zugriff auf diesen Filter ist die Zugriffssteuerung aufträge aktiviert.

Sie können auch auf eine beliebige Spaltenüberschrift klicken, um die Liste der Aufträge (entweder absteigend oder aufsteigend) nach dieser Spalte zu sortieren. Die Standardsortierung ist nach Auftragsname in aufsteigender Reihenfolge.

Anzeigen von Auftragsläufen

  1. Klicken Sie in der RandleisteaufAufträge SymbolAufträge.
  2. Klicken Sie in der Spalte Name auf einen Auftragsnamen. Auf der Registerkarte Führt werden aktive und abgeschlossene Läufe angezeigt.

Auftragsdetails

Azure Databricks verwaltet einen Verlauf Ihrer Auftragsläufe bis zu 60 Tage. Wenn Sie Auftragsläufe beibehalten müssen, empfiehlt Databricks, Ergebnisse zu exportieren, bevor sie ablaufen. Weitere Informationen finden Sie unter Export job run results (Exportieren von Auftragslaufergebnissen).

Anzeigen von Auftragslaufdetails

Die Detailseite für die Auftragslauf enthält die Auftragsausgabe und Links zu Protokollen. Wenn die Orchestrierung mehrerer Aufgaben aktiviert ist, enthält die Seite mit den Auftragslaufdetails Informationen zum Erfolg oder Fehler der einzelnen Aufgaben in der Auftrags ausgeführten Aufgabe. Sie können auf der Registerkarte Ausführungen für den Auftrag auf die Details der Auftragsläufe zugreifen. Klicken Sie zum Anzeigen von Auftragslaufdetails auf der Registerkarte Ausführungen in der Spalte Ausführen der Tabelle Completed Runs (past 60 days) (Abgeschlossene Ausführungen (letzten 60 Tage)) auf den Link für die Ausführung. Klicken Sie auf den Wert derAuftrags-ID, um zur Registerkarte "Führt" für den Auftrag zurückzukehren.

Klicken Sie für einen Auftrag, der mehrere Aufgaben orchestriert, auf eine Aufgabe, um Details zur Tasklaufanzeige anzuzeigen, einschließlich:

  • der Cluster, der die Aufgabe ausgeführt hat
    • Spark-Benutzeroberfläche für die Aufgabe
    • Protokolle für die Aufgabe
    • Metriken für die Aufgabe

Klicken Sie auf den Wert der Auftrags-ID, um zur Registerkarte "Führt" für den Auftrag zurückzukehren. Klicken Sie auf den Wert der Auftragslauf-ID, um zu den Auftragslaufdetails zurückzukehren.

Exportieren von Auftragslaufergebnissen

Sie können Notebook-Ausführungsergebnisse und Auftragslaufprotokolle für alle Auftragstypen exportieren.

Exportieren von Notebook-Ausführungsergebnissen

Sie können Auftragsläufe beibehalten, indem Sie deren Ergebnisse exportieren. Bei Notebook-Auftragsläufen können Sie ein gerenderte Notebook exportieren, das später in Ihren Azure Databricks werden kann.

So exportieren Sie Notebook-Ausführungsergebnisse für einen Auftrag mit einer einzelnen Aufgabe:

  1. Klicken Sie auf der Seite mit den Auftragsdetails in der Spalte Ausführen der Tabelle Abgeschlossene Ausführungen (letzten 60 Tage) auf den Link Details anzeigen für die Ausführung.
  2. Klicken Sie auf In HTML exportieren.

So exportieren Sie Notebook-Ausführungsergebnisse für einen Auftrag mit mehreren Aufgaben:

  1. Klicken Sie auf der Seite mit den Auftragsdetails in der Spalte Ausführen der Tabelle Abgeschlossene Ausführungen (letzten 60 Tage) auf den Link Details anzeigen für die Ausführung.
  2. Klicken Sie auf den zu exportierenden Notebook-Task.
  3. Klicken Sie auf In HTML exportieren.

Exportieren von Auftragslaufprotokollen

Sie können auch die Protokolle für Ihre Auftragslauf exportieren. Sie können Ihren Auftrag so einrichten, dass Protokolle über die Auftrags-API automatisch an DBFS gesendet werden. Sehen Sie sich das -Objekt im Anforderungskörper an, das an den Vorgang Zum Erstellen eines neuen Auftrags new_cluster.cluster_log_conf ( ) in der new_cluster.cluster_log_confPOST /jobs/create Auftrags-API übergeben wird.

Bearbeiten eines Auftrags

Einige Konfigurationsoptionen sind für den Auftrag verfügbar, während andere für einzelne Tasks verfügbar sind. Beispielsweise kann die maximale Anzahl gleichzeitiger Läufe nur für den Auftrag festgelegt werden, während Parameter für jede Aufgabe definiert werden müssen.

So ändern Sie die Konfiguration für einen Auftrag:

  1. Klicken Sie in der RandleisteaufAufträge SymbolAufträge.
  2. Klicken Sie in der Spalte Name auf den Auftragsnamen.

Im Seitenbereich werden die Auftragsdetails angezeigt. Sie können den Zeitplan, dieClusterkonfiguration, Warnungen und die maximale Anzahl gleichzeitiger Läufe ändern. Sie können auftragsberechtigungen auch bearbeiten, wenn die Zugriffssteuerung für Den Auftrag aktiviert ist.

Maximale Anzahl gleichzeitiger Läufe

Die maximale Anzahl paralleler Läufe für diesen Auftrag. Azure Databricks wird die Ausführung übersprungen, wenn der Auftrag beim Versuch, eine neue Ausführung zu starten, bereits die maximale Anzahl aktiver Ausführungen erreicht hat. Legen Sie diesen Wert höher als den Standardwert 1 fest, um mehrere Ausführungen desselben Auftrags gleichzeitig durchzuführen. Dies ist beispielsweise nützlich, wenn Sie Ihren Auftrag nach einem häufigen Zeitplan auslösen und aufeinanderfolgende Läufe überlappen möchten, oder wenn Sie mehrere Durchläufe auslösen möchten, die sich durch ihre Eingabeparameter unterscheiden.

Warnungen

E-Mail-Warnungen, die bei Auftragsfehlern, Erfolg oder Timeout gesendet werden. Sie können Warnungen für Auftragsstart, Auftragserfolg und Auftragsfehler (einschließlich übersprungener Aufträge) einrichten und mehrere durch Komma getrennte E-Mail-Adressen für jeden Warnungstyp bereitstellen. Sie können auch Warnungen für übersprungene Auftragsläufe deaktivieren.

Konfigurieren von E-Mail-Warnungen

Integrieren Sie diese E-Mail-Warnungen in Ihre bevorzugten Benachrichtigungstools, einschließlich:

Steuern des Zugriffs auf Aufträge

Mit der Auftragszugriffssteuerung können Auftragsbesitzer und -administratoren fein abgrenzende Berechtigungen für ihre Aufträge erteilen. Auftragsbesitzer können auswählen, welche anderen Benutzer oder Gruppen die Ergebnisse des Auftrags anzeigen können. Besitzer können auch auswählen, wer ihre Auftragsläufe verwalten kann (Jetzt ausführen und Ausführungsberechtigungen abbrechen).

Weitere Informationen finden Sie unter Zugriffssteuerung für Aufträge.

Bearbeiten einer Aufgabe

So legen Sie Aufgabenkonfigurationsoptionen fest:

  1. Klicken Sie in der RandleisteaufAufträge SymbolAufträge.
  2. Klicken Sie in der Spalte Name auf den Auftragsnamen.
  3. Wenn die Orchestrierung mehrerer Aufgaben aktiviert ist, klicken Sie auf die Registerkarte Aufgaben. Wenn die Aufgaben orchestrierung nicht aktiviert ist, klicken Sie auf die Registerkarte Aufgabe.

Taskabhängigkeiten

Wenn die Orchestrierung mehrerer Aufgaben aktiviert ist, können Sie die Reihenfolge der Ausführung von Aufgaben in einem Auftrag mithilfe der Dropdownliste Abhängig von definieren. Sie können dieses Feld auf eine oder mehrere Aufgaben im Auftrag festlegen.

Bearbeiten von Taskabhängigkeiten

Hinweis

Abhängig von ist nicht sichtbar, wenn der Auftrag nur aus einer einzelnen Aufgabe besteht.

Durch das Konfigurieren von Taskabhängigkeiten wird eine gerichtete azyklische Graph (Directed Acyclic Graph, DAG) der Taskausführung erstellt. Dies ist eine gängige Methode zum Darstellen der Ausführungs reihenfolge in Auftragsplanern. Betrachten Sie beispielsweise den folgenden Auftrag, der aus vier Aufgaben besteht:

Beispieldiagramm zu Taskabhängigkeiten

  • Aufgabe 1 ist die Stammaufgabe und hängt nicht von einer anderen Aufgabe ab.
  • Aufgabe 2 und Aufgabe 3 hängen davon ab, dass Aufgabe 1 zuerst abgeschlossen wird.
  • Schließlich hängt Aufgabe 4 davon ab, dass Aufgabe 2 und Aufgabe 3 erfolgreich abgeschlossen wurden.

Azure Databricks werden Upstreamaufgaben ausgeführt, bevor Downstreamaufgaben ausgeführt werden und so viele davon parallel wie möglich ausgeführt werden. Das folgende Diagramm veranschaulicht die Reihenfolge der Verarbeitung für diese Aufgaben:

Beispielfluss für Taskabhängigkeiten

Konfigurationsoptionen für einzelne Aufgaben

Einzelne Aufgaben verfügen über die folgenden Konfigurationsoptionen:

In diesem Abschnitt

Cluster

Klicken Sie auf die Dropdownliste Cluster, um den Cluster zu konfigurieren, in dem ein Task ausgeführt wird. Weitere Informationen zum Auswählen und Konfigurieren von Clustern zum Ausführen von Aufgaben finden Sie unter Tipps zur Clusterkonfiguration.

Hinweis

Jede Aufgabe wird entweder in einem Allzweckcluster oder in einem neuen Auftragscluster ausgeführt. Sie können denselben Auftragscluster nicht für mehrere Aufgaben in einem Auftrag verwenden.

Abhängige Bibliotheken

Abhängige Bibliotheken werden auf dem Cluster installiert, bevor der Task ausgeführt wird. Sie müssen alle Taskabhängigkeiten festlegen, um sicherzustellen, dass sie installiert sind, bevor die Ausführung gestartet wird.

Klicken Sie zum Hinzufügen einer abhängigen Bibliothek auf Erweiterte Optionen, und wählen Sie Abhängige Bibliotheken hinzufügen aus, um die Auswahl Abhängige Bibliothek hinzufügen zu öffnen. Befolgen Sie die Empfehlungen unter Bibliotheksabhängigkeiten zum Angeben von Abhängigkeiten.

Wichtig

Wenn Sie eine Bibliothek für die automatische Installation auf allen Clustern konfiguriert haben oder einen vorhandenen beendeten Cluster auswählen, auf dem Bibliotheken installiert sind, wartet die Auftragsausführung nicht auf den Abschluss der Bibliotheksinstallation. Wenn ein Auftrag eine bestimmte Bibliothek erfordert, sollten Sie die Bibliothek an den Auftrag im Feld Abhängige Bibliotheken anfügen.

Taskparametervariablen

Sie können Vorlagenvariablen als Teil der Parameter der Aufgabe an eine Auftragsaufgabe übergeben. Diese Variablen werden bei der Auftragsaufgabe durch die entsprechenden Werte ersetzt. Sie können Aufgabenparameterwerte verwenden, um den Kontext zu einer Auftragslauf zu übergeben, z. B. die Ausführungs-ID oder die Startzeit des Auftrags.

Wenn ein Auftrag ausgeführt wird, wird die Taskparametervariable, die von doppelten geschweiften Klammern umgeben ist, ersetzt und an einen optionalen Zeichenfolgenwert angefügt, der als Teil des Werts enthalten ist. Um beispielsweise einen Parameter mit dem Namen mit dem Wert für jede Ausführung von Auftrags-ID 6 zu übergeben, fügen MyJobId Sie den folgenden my-job-6 Taskparameter hinzu:

{
  "MyJobID": "my-job-{{job_id}}"
}

Da der Inhalt der doppelten geschweiften Klammern nicht als Ausdrücke ausgewertet wird, können Sie keine Vorgänge oder Funktionen in doppelt geschweiften Klammern ausführen. Leerzeichen werden nicht innerhalb der geschweiften Klammern entfernt, {{ job_id }} sodass nicht ausgewertet wird.

Die folgenden Taskparametervariablen werden unterstützt:

Variable Beschreibung
{{job_id}} Der einem Auftrag zugewiesene eindeutige Bezeichner
{{run_id}} Der eindeutige Bezeichner, der einer Auftragslauf zugewiesen ist
{{start_date}} Das Datum, an dem eine Auftrags ausgeführt wurde. Das Format ist yyyy-MM-dd in UTC-Zeitzone.
{{start_time}} Der Zeitstempel des Ausführungsstarts der Ausführung, nachdem der Cluster erstellt und bereit ist. Das Format ist Millisekunden, da UNIX in UTC-Zeitzone liegt, wie von System.currentTimeMillis() zurückgegeben.
{{task_retry_count}} Die Anzahl der Erneuten, die versucht wurden, eine Aufgabe auszuführen, wenn der erste Versuch fehlschlägt. Der Wert ist 0 (0) für den ersten Versuch und wird bei jedem Wiederholungsversuch erhöht.

Die folgenden Taskparametervariablen werden unterstützt, wenn die Orchestrierung mehrerer Aufgaben aktiviert ist:

Variable BESCHREIBUNG Beispielwert
{{parent_run_id}} Der eindeutige Bezeichner, der der Ausführung eines Auftrags mit mehreren Aufgaben zugewiesen ist. 3447835
{{task_key}} Der eindeutige Name, der einer Aufgabe zugewiesen ist, die Teil eines Auftrags mit mehreren Aufgaben ist. "clean_raw_data"

Sie können diese Variablen mit einer beliebigen Aufgabe festlegen,wenn Sie einen Auftrag erstellen,einen Auftrag bearbeiten oder einen Auftrag mit unterschiedlichen Parametern ausführen.

Timeout

Die maximale Abschlusszeit für einen Auftrag. Wenn der Auftrag in diesem Zeitraum nicht abgeschlossen wird, Azure Databricks status auf "Timed Out" (Timed Out) fest.

Wiederholungsversuche

Eine Richtlinie, die bestimmt, wann und wie oft fehlgeschlagene Läufe wiederholt werden. Klicken Sie zum Festlegen der Wiederholungen für die Aufgabe auf Erweiterte Optionen, und wählen Sie Wiederholungsrichtlinie bearbeiten aus.

Hinweis

Wenn Sie sowohl Timeout als auch Wiederholungenkonfigurieren, gilt das Timeout für jeden Wiederholungsversuch.

Klonen eines Auftrags

Sie können schnell einen neuen Auftrag erstellen, indem Sie einen vorhandenen Auftrag klonen. Beim Klonen eines Auftrags wird eine identische Kopie des Auftrags erstellt, mit Ausnahme der Auftrags-ID. Klicken Sie auf der Seite des Auftrags neben dem Namen des Auftrags auf Mehr ... , und wählen Sie im Dropdownmenü Klonen aus.

Klonen einer Aufgabe

Sie können schnell eine neue Aufgabe erstellen, indem Sie eine vorhandene Aufgabe klonen:

  1. Klicken Sie auf der Seite des Auftrags auf die Registerkarte Aufgaben.
  2. Wählen Sie die aufgabe aus, die geklont werden soll.
  3. Klicken Sie auf Vertikale Auslassungsellipse für Aufträge, und wählen Sie Aufgabe klonen aus.

Löschen eines Auftrags

Klicken Sie zum Löschen eines Auftrags auf der Seite des Auftrags neben dem Namen des Auftrags auf Mehr ... , und wählen Sie im Dropdownmenü Löschen aus.

Löschen einer Aufgabe

So löschen Sie eine Aufgabe, wenn die Orchestrierung mehrerer Tasks aktiviert ist:

  1. Klicken Sie auf die Registerkarte Tasks.
  2. Wählen Sie die zu löschende Aufgabe aus.
  3. Klicken Sie auf Vertikale Auslassungsellipse für Aufträge, und wählen Sie Aufgabe entfernen aus.

Kopieren eines Aufgabenpfads

So kopieren Sie den Pfad in eine Aufgabe, z. B. einen Notebookpfad:

  1. Klicken Sie auf die Registerkarte Tasks.
  2. Wählen Sie die Aufgabe aus, die den zu kopierenden Pfad enthält.
  3. Klicken Sie neben dem Aufgabenpfad auf Das Symbol zum Kopieren von Aufträgen, um den Pfad in die Zwischenablage zu kopieren.

Bewährte Methoden

In diesem Abschnitt

Tipps zur Clusterkonfiguration

Die Clusterkonfiguration ist wichtig, wenn Sie einen Auftrag operationalisieren. Im Folgenden finden Sie allgemeine Anleitungen zum Auswählen und Konfigurieren von Auftragsclustern, gefolgt von Empfehlungen für bestimmte Auftragstypen.

Auswählen des richtigen Clustertyps für Ihren Auftrag

  • Neue Auftragscluster sind dedizierte Cluster, die beim Ausführen einer Aufgabe erstellt und gestartet werden und sofort nach Abschluss der Aufgabe beendet werden. In der Produktion empfiehlt Databricks die Verwendung neuer Cluster, damit jede Aufgabe in einer vollständig isolierten Umgebung ausgeführt wird.
  • Wenn Sie eine Aufgabe in einem neuen Cluster ausführen, wird die Aufgabe gemäß den Preisen der Aufgabenworkload als Workload für die Datentechnik (Task) behandelt. Wenn Sie eine Aufgabe in einem vorhandenen Allzweckcluster ausführen, wird die Aufgabe gemäß den Preisen für allzweckbezogene Workloads als Datenanalyseworkload (allzweckbasierte Workload) behandelt.
  • Wenn Sie einen beendeten vorhandenen Cluster auswählen und der Auftragsbesitzer über dieBerechtigungKann neu startenverfügen, startet Azure Databricks den Cluster, wenn die Ausführung des Auftrags geplant ist.
  • Vorhandene Allzweckcluster funktionieren am besten für Aufgaben wie das regelmäßige Aktualisieren von Dashboards.

Verwenden eines Pools zum Reduzieren der Startzeiten von Clustern

Um die Startzeit für neue Auftragscluster zu verringern, erstellen Sie einen Pool, und konfigurieren Sie den Cluster des Auftrags für die Verwendung des Pools.

Notebook-Auftragstipps

Die Gesamtausgabe der Notebookzelle (die kombinierte Ausgabe aller Notebookzellen) unterliegt einer Größenbeschränkung von 20 MB. Darüber hinaus unterliegt die Ausgabe einzelner Zellen einer Größenbeschränkung von 8 MB. Wenn die gesamte Zellenausgabe 20 MB überschreitet oder die Ausgabe einer einzelnen Zelle größer als 8 MB ist, wird die Ausführung abgebrochen und als fehlgeschlagen markiert.

Wenn Sie Hilfe bei der Suche nach Zellen benötigen, die nahe oder über dem Grenzwert liegen, führen Sie das Notebook für einen Allzweckcluster aus, und verwenden Sie dieses Notebook-Verfahrenfür die automatische Speicherung.

Streamingtasks

Für Spark Streaming-Aufträge sollte nie die maximale Anzahl gleichzeitiger Ausführungen auf größer als 1 festgelegt sein. Streamingaufträge sollten auch so festgelegt werden, dass sie mit einem Cron-Zeitplan "* * * * * *" (jede Sekunde) oder jede Minute ausgeführt werden. Darüber hinaus sollten Wiederholungen nie für Streamingaufträge aktiviert werden.

Da eine Streamingaufgabe kontinuierlich ausgeführt wird, sollte sie immer die letzte Aufgabe in einem Auftrag sein.

JAR-Aufträge

Beachten Sie beim Ausführen eines JAR-Auftrags Folgendes:

Grenzwerte für die Ausgabegröße

Hinweis

Verfügbar in Databricks Runtime 6.3 und höher.

Die Auftragsausgabe, z. B. die an stdout ausgegebene Protokollausgabe, unterliegt einer Größenbeschränkung von 20 MB. Wenn die Gesamtausgabe größer ist, wird die Ausführung abgebrochen und als fehlgeschlagen markiert.

Um dieses Limit zu vermeiden, können Sie verhindern, dass stdout vom Treiber an Azure Databricks zurückgegeben wird, indem Sie die spark.databricks.driver.disableScalaOutput Spark-Konfiguration auf true festlegen. Standardmäßig ist der Flagwert false . Das Flag steuert die Zellenausgabe für Scala-JAR-Aufträge und Scala-Notebooks. Wenn das Flag aktiviert ist, gibt Spark keine Ergebnisse der Auftragsausführung an den Client zurück. Das Flag wirkt sich nicht auf die Daten aus, die in die Protokolldateien des Clusters geschrieben werden. Das Festlegen dieses Flags wird nur für Auftragscluster für JAR-Aufträge empfohlen, da notebook-Ergebnisse deaktiviert werden.

Verwenden der freigegebenen SparkContext

Da Azure Databricks ein verwalteter Dienst ist, sind möglicherweise einige Codeänderungen erforderlich, um sicherzustellen, dass Ihre Apache Spark Aufträge ordnungsgemäß ausgeführt werden. JAR-Auftragsprogramme müssen die freigegebene SparkContext API verwenden, um den SparkContext abzurufen. Da Azure Databricks initialisiert, SparkContext schlagen Programme new SparkContext() fehl, die aufrufen. Verwenden Sie zum Abrufen von nur die freigegebene , SparkContext die von Azure Databricks erstellt SparkContext wurde:

val goodSparkContext = SparkContext.getOrCreate()
val goodSparkSession = SparkSession.builder().getOrCreate()

Es gibt auch mehrere Methoden, die Sie vermeiden sollten, wenn Sie die freigegebene SparkContext verwenden.

  • Rufen Sie SparkContext.stop() nicht auf.
  • Rufen Sie oder nicht System.exit(0) am Ende des Programms sc.stop()Main auf. Dies kann zu nicht definiertem Verhalten führen.

Verwenden von try-finally Blöcken für die Auftragsbereinigung

Betrachten Sie eine JAR-Datei, die aus zwei Teilen besteht:

  • jobBody() , der den Hauptteil des Auftrags enthält.
  • jobCleanup() , das ausgeführt werden muss, nachdem überprüft werden jobBody() muss, ob diese Funktion erfolgreich war oder eine Ausnahme zurückgegeben hat.

Als Beispiel jobBody() kann Tabellen erstellen, und Sie können verwenden, jobCleanup() um diese Tabellen zu löschen.

Die sichere Möglichkeit, sicherzustellen, dass die Clean up-Methode aufgerufen wird, besteht darin, einen -Block in den Code zu try-finally setzen:

try {
  jobBody()
} finally {
  jobCleanup()
}

Sie sollten nicht versuchen, die Bereinigung mit oder dem folgenden Code zu versuchen:

val cleanupThread = new Thread { override def run = jobCleanup() }
Runtime.getRuntime.addShutdownHook(cleanupThread)

Aufgrund der Art und Weise, wie die Lebensdauer von Spark-Containern in Azure Databricks verwaltet wird, werden die Hooks zum Herunterfahren nicht zuverlässig ausgeführt.

Konfigurieren von JAR-Auftragsparametern

Sie übergeben Parameter mit einem JSON-Zeichenfolgenarray an JAR-Aufträge. Sehen Sie sich das spark_jar_task -Objekt im Anforderungstext an, der an den Vorgang spark_jar_taskPOST /jobs/create () in der Auftrags-API übergeben wird. Um auf diese Parameter zuzugreifen, überprüfen Sie das String an Ihre Funktion übergebene main Array.

Bibliotheksabhängigkeiten

Der Spark-Treiber verfügt über bestimmte Bibliotheksabhängigkeiten, die nicht überschrieben werden können. Diese Bibliotheken haben Vorrang vor ihren Bibliotheken, die mit ihnen in Konflikt geraten.

Um die vollständige Liste der Abhängigkeiten der Treiberbibliothek abzurufen, führen Sie den folgenden Befehl in einem Notebook aus, das an einen Cluster der gleichen Spark-Version angefügt ist (oder in dem Cluster mit dem Treiber, den Sie untersuchen möchten).

%sh
ls /databricks/jars

Verwalten von Bibliotheksabhängigkeiten

Eine gute Faustregel beim Umgang mit Bibliotheksabhängigkeiten beim Erstellen von JARs für Aufträge ist das Auflisten von Spark und Hadoop als provided Abhängigkeiten. Fügen Sie in Maven Spark und Hadoop wie im folgenden Beispiel gezeigt als bereitgestellte Abhängigkeiten hinzu:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>1.2.1</version>
  <scope>provided</scope>
</dependency>

sbtFügen Sie in Spark und Hadoop als bereitgestellte Abhängigkeiten hinzu, wie im folgenden Beispiel gezeigt:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0" % "provided"
libraryDependencies += "org.apache.hadoop" %% "hadoop-core" % "1.2.1" % "provided"

Tipp

Geben Sie basierend auf der ausgeführten Version die richtige Scala-Version für Ihre Abhängigkeiten an.