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, wirdValueError
ausgelöst.key
ist der Name des Schlüssels für den Aufgabenwert. Wenn der Befehl den Schlüssel dieses Aufgabenwerts nicht finden kann, wirdValueError
ausgelöst (es sei denn,default
ist angegeben).default
ist ein optionaler Wert, der zurückgegeben wird, wennkey
nicht gefunden werden kann.default
darf nichtNone
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 einTypeError
auszulösen.debugValue
darf nichtNone
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.
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.