Freigeben über


Freigeben von Informationen zwischen Aufgaben in einem Azure Databricks-Auftrag

Sie können mithilfe von Aufgabenwerten beliebige Parameter zwischen Aufgaben in einem Azure Databricks-Auftrag übergeben. Sie übergeben Aufgabenwerte mithilfe des Unterhilfsprogramms „taskValues“ in Databricks-Hilfsprogramme. Das Unterhilfsprogramm „taskValues“ stellt eine einfache API bereit. Sie ermöglicht Aufgaben die Ausgabe von Werten, auf die in nachfolgenden Aufgaben verwiesen werden kann. Dadurch wird die Erstellung ausdrucksstärkerer Workflows erleichtert. Sie können beispielsweise Bezeichner oder Metriken (etwa Informationen zur Auswertung eines Machine Learning-Modells) zwischen verschiedenen Aufgaben innerhalb einer Auftragsausführung kommunizieren. Jede Aufgabe kann mehrere Aufgabenwerte festlegen und abrufen. Aufgabenwerte können in Python-Notebooks festgelegt und abgerufen werden.

Hinweis

Sie können jetzt dynamische Wertverweise in Ihren Notebooks verwenden, um auf Aufgabenwerte zu verweisen, die in Upstream-Aufgaben festgelegt sind. Um z. B. auf den Wert mit dem von der Aufgabe Get_user_data festgelegten Schlüssel name zu verweisen, verwenden Sie {{tasks.Get_user_data.values.name}}. Da sie mit mehreren Aufgabentypen verwendet werden können, empfiehlt Databricks die Verwendung dynamischer Wertverweise anstelle von dbutils.jobs.taskValues.get, um den Aufgabenwert programmgesteuert abzurufen.

Verwenden von Aufgabenwerten

Das Unterhilfsprogramm „taskValues“ stellt zwei Befehle bereit: dbutils.jobs.taskValues.set() zum Festlegen einer Variablen und dbutils.jobs.taskValues.get() zum Abrufen eines Werts. Angenommen, Sie haben zwei Notebook-Aufgaben (Get_user_data und Analyze_user_data) und möchten den Namen und das Alter eines Benutzers aus der Aufgabe Get_user_data an die Aufgabe Analyze_user_data übergeben. Im folgenden Beispiel wird der Name und das Alter des Benutzers in der Aufgabe Get_user_data festgelegt:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key ist der Name des Schlüssels für den Aufgabenwert. Dieser Name muss für die Aufgabe eindeutig sein.
  • value ist der Wert für den Schlüssel dieses Aufgabenwerts. Dieser Befehl muss in der Lage sein, den Wert intern im JSON-Format darzustellen. Die Größe der JSON-Darstellung des Werts darf 48 KiB nicht überschreiten.

Im folgenden Beispiel werden die Werte in der Aufgabe Analyze_user_data abgerufen:

dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
  • taskKey ist der Name der Auftragsaufgabe, die den Wert festlegt. Wenn der Befehl diese Aufgabe nicht finden kann, wird ValueError ausgelöst.
  • key ist der Name des Schlüssels für den Aufgabenwert. Wenn der Befehl den Schlüssel dieses Aufgabenwerts nicht finden kann, wird ValueError ausgelöst (es sei denn, default ist angegeben).
  • default ist ein optionaler Wert, der zurückgegeben wird, wenn key nicht gefunden werden kann. default darf nicht None sein.
  • debugValue ist ein optionaler Wert, der zurückgegeben wird, wenn Sie versuchen, den Aufgabenwert aus einem Notebook abzurufen, das außerhalb eines Auftrags ausgeführt wird. Dies kann beim Debuggen nützlich sein, wenn Sie Ihr Notebook manuell ausführen und einen Wert zurückgeben möchten, anstatt standardmäßig ein TypeError auszulösen. debugValue darf nicht None sein.

Nehmen Sie als komplexeres Beispiel für die Freigabe von Kontext zwischen Aufgaben an, dass Sie eine Anwendung mit mehreren Machine Learning-Modellen haben, um das Einkommen einer Person anhand von verschiedenen persönlichen Attributen vorherzusagen, und eine Aufgabe haben, die das am besten zu verwendende Modell ermittelt, basierend auf der Ausgabe aus den vorherigen drei Aufgaben. Die Modelle werden von den drei Aufgaben Logistic_Regression, Decision_Tree und Random_Forest ausgeführt, und die Aufgabe Best_Model ermittelt das am besten zu verwendende Modell, basierend auf der Ausgabe aus den vorherigen drei Aufgaben.

Graph of example classification application

Die Genauigkeit für jedes Modell (d. h. wie gut der Klassifizierer das Einkommen vorhersagt) wird in einem Aufgabenwert übergeben, um den Algorithmus mit der besten Leistung zu ermitteln. Beispielsweise enthält das der Aufgabe Logistic_Regression zugeordnete Notebook zur logistischen Regression den folgenden Befehl:

dbutils.jobs.taskValues.set(key = "model_performance", value = result)

Jede Modellaufgabe legt einen Wert für den Schlüssel model_performance fest. Die Aufgabe Best_Model liest den Wert für jede Aufgabe und verwendet ihn zum Ermitteln des optimalen Modells. Im folgenden Beispiel wird der durch die Aufgabe Logistic_Regression festgelegte Wert gelesen:

logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")

Anzeigen von Aufgabenwerten

Wenn Sie den Wert einer Aufgabe nach deren Ausführung anzeigen möchten, wechseln Sie zum Ausführungsverlauf für die Aufgabe. Die Ergebnisse für den Aufgabenwert werden im Bereich Ausgabe angezeigt.