Verwenden von Aufgabenwerten zur Weitergabe von Informationen zwischen Aufgaben
Aufgabenwerte beziehen sich auf das Unterhilfsprogramm taskValues
von Databricks Utilities, mit der Sie beliebige Werte zwischen Aufgaben in einem Databricks-Job übergeben können. Weitere Informationen finden Sie unter taskValues-Unterhilfsprogramm (dbutils.jobs.taskValues).
Sie geben ein Schlüssel-Wert-Paar in einer Aufgabe mit dbutils.jobs.taskValues.set()
an und können dann den Aufgabennamen und den Schlüssel verwenden, um in nachfolgenden Aufgaben auf den Wert zu verweisen.
Hinweis
Die Unterhilfsprogramme dbutils.jobs.taskValues.set()
und dbutils.jobs.taskValues.get()
sind nur in Python-Notebooks verfügbar. Sie können auf Aufgabenwerte verweisen, indem Sie dynamische Wertverweise für alle Aufgaben verwenden, die Parameter unterstützen. Siehe Referenzaufgabenwerte.
Aufgabenwerte festlegen
Legen Sie Aufgabenwerte in Python-Notebooks mithilfe des Unterhilfsprogramms dbutils.jobs.taskValues.set()
fest.
Aufgabenwertschlüssel müssen Zeichenketten sein. Jeder Schlüssel muss eindeutig sein, wenn mehrere Aufgabenwerte in einem Notebook definiert sind.
Sie können Aufgabenwerte manuell oder programmgesteuert Schlüsseln zuweisen. Es sind nur Werte zulässig, die als gültiges JSON ausgedrückt werden können. Die Größe der JSON-Darstellung des Werts darf 48 KiB nicht überschreiten.
Im folgenden Beispiel wird beispielsweise eine statische Zeichenfolge für den Schlüssel fave_food
festgelegt:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
Im folgenden Beispiel wird ein Notebook-Aufgabenparameter verwendet, um alle Datensätze für eine bestimmte Bestellnummer abzufragen und den aktuellen Bestellstatus und die Gesamtanzahl der Datensätze zurückzugeben:
from pyspark.sql.functions import col
order_num = dbutils.widgets.get("order_num")
query = (spark.read.table("orders")
.orderBy(col("updated"), ascending=False)
.select(col("order_status"))
.where(col("order_num") == order_num)
)
dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])
Sie können Listen mit Werten mithilfe dieses Musters übergeben und diese dann verwenden, um die Downstream-Logik zu koordinieren, z. B. für jede Aufgabe. Siehe Ausführen einer parametrisierten Azure Databricks-Auftragsaufgabe in einer Schleife.
Im folgenden Beispiel werden die unterschiedlichen Werte für die Produkt-ID in eine Python-Liste extrahiert und als Aufgabenwert festgelegt:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Referenzaufgabenwerte
Databricks empfiehlt das Verweisen auf Aufgabenwerte als Aufgabenparameter, die mithilfe des dynamischen Wertvreferenzmusters {{tasks.<task_name>.values.<value_name>}}
konfiguriert sind.
Um zum Beispiel den Aufgabenwert mit dem Schlüssel prod_list
einer Aufgabe mit dem Namen product_inventory
zu referenzieren, verwenden Sie die Syntax {{tasks.product_inventory.values.prod_list}}
.
Siehe Konfigurieren von Vorgangsparametern und Was ist eine dynamische Wertreferenz?
Verwenden Sie dbutils.jobs.taskValues.get
Für die Syntax dbutils.jobs.taskValues.get()
ist die Angabe des Upstream-Aufgabennamens erforderlich. Diese Syntax wird nicht empfohlen, da Sie Aufgabenwerte in mehreren nachgelagerten Aufgaben verwenden können, was bedeutet, dass zahlreiche Aktualisierungen erforderlich sind, wenn sich ein Aufgabenname ändert.
Mithilfe dieser Syntax können Sie optional einen default
-Wert und ein debugValue
festlegen. Der Standardwert wird verwendet, wenn der Schlüssel nicht gefunden werden kann. debugValue
ermöglicht es Ihnen, einen statischen Wert festzulegen, der während der manuellen Codeentwicklung und beim Testen in Notebooks verwendet werden soll, bevor Sie das Notebook als Aufgabe planen.
Im folgenden Beispiel wird der Wert für den Schlüssel order_status
abgerufen, der in einem Aufgabennamen order_lookup
festgelegt ist. Der Wert Delivered
wird nur zurückgegeben, wenn das Notebook interaktiv ausgeführt wird.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Hinweis
Databricks empfiehlt das Festlegen von Standardwerten nicht, da es schwierig sein kann, erwartete Fehlermeldungen aufgrund fehlender Schlüssel oder falsch benannter Aufgaben zu beheben und zu verhindern.
Anzeigen von Aufgabenwerten
Der zurückgegebene Wert eines Aufgabenwerts für jede Ausführung wird im Ausgabe-Bereich der Aufgabenausführungsdetails angezeigt. Weitere Informationen finden Sie unter Anzeigen des Ausführungsverlaufs von Aufgaben.