Taakwaarden gebruiken om informatie door te geven tussen taken
Taakwaarden verwijzen naar de subutiliteit van Databricks Utilities taskValues
, waarmee u willekeurige waarden tussen taken in een Databricks-taak kunt doorgeven. Zie subutiliteit taskValues (dbutils.jobs.taskValues).
U geeft een sleutel-waardepaar op met behulp van dbutils.jobs.taskValues.set()
één taak en vervolgens kunt u de taaknaam en sleutel gebruiken om te verwijzen naar de waarde in volgende taken.
Notitie
De subhulpprogramma's dbutils.jobs.taskValues.set()
en dbutils.jobs.taskValues.get()
zijn alleen beschikbaar in Python-notebooks. U kunt verwijzen naar taakwaarden met behulp van dynamische waardeverwijzingen voor alle taken die parameters ondersteunen. Zie Referentietaakwaarden.
Taakwaarden instellen
Stel taakwaarden in Python-notebooks in met behulp van de subutiliteit dbutils.jobs.taskValues.set()
.
Taakwaardesleutels moeten tekenreeksen zijn. Elke sleutel moet uniek zijn als u meerdere taakwaarden hebt gedefinieerd in een notebook.
U kunt taakwaarden handmatig of programmatisch toewijzen aan sleutels. Alleen waarden die als geldige JSON kunnen worden uitgedrukt, zijn toegestaan. De grootte van de JSON-weergave van de waarde mag niet groter zijn dan 48 KiB.
In het volgende voorbeeld wordt bijvoorbeeld een statische tekenreeks ingesteld voor de sleutel fave_food
:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
In het volgende voorbeeld wordt een notebooktaakparameter gebruikt om een query uit te voeren op alle records voor een bepaald ordernummer en de huidige orderstatus en het totale aantal records te retourneren:
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])
U kunt lijsten met waarden doorgeven met dit patroon en deze vervolgens gebruiken om downstreamlogica te coördineren, zoals voor elke taken. Zie Een geparameteriseerde Azure Databricks-taak uitvoeren in een lus.
In het volgende voorbeeld worden de unieke waarden voor product-id opgehaald naar een Python-lijst en wordt deze ingesteld als een taakwaarde:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Referentietaakwaarden
Databricks raadt aan om te verwijzen naar taakwaarden als taakparameters die zijn geconfigureerd met behulp van het referentiepatroon {{tasks.<task_name>.values.<value_name>}}
voor dynamische waarden.
Als u bijvoorbeeld wilt verwijzen naar de taakwaarde met de sleutel prod_list
van een benoemde product_inventory
taak, gebruikt u de syntaxis {{tasks.product_inventory.values.prod_list}}
.
Zie Taakparameters configureren en Wat is een verwijzing naar een dynamische waarde?
dbutils.jobs.taskValues.get
gebruiken
Voor de syntaxis dbutils.jobs.taskValues.get()
moet de naam van de upstream-taak worden opgegeven. Deze syntaxis wordt niet aanbevolen, omdat u taakwaarden in meerdere downstreamtaken kunt gebruiken, wat betekent dat er talloze updates nodig zijn als een taaknaam wordt gewijzigd.
Met deze syntaxis kunt u desgewenst een default
waarde en een debugValue
. De standaardwaarde wordt gebruikt als de sleutel niet kan worden gevonden. Hiermee debugValue
kunt u een statische waarde instellen die moet worden gebruikt tijdens het handmatig ontwikkelen en testen van code in notebooks voordat u het notebook als taak plant.
In het volgende voorbeeld wordt de waarde voor de sleutel order_status
die is ingesteld in een taaknaam order_lookup
opgehaald. De waarde Delivered
wordt alleen geretourneerd wanneer u het notebook interactief uitvoert.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Notitie
Databricks raadt niet aan om standaardwaarden in te stellen, omdat het lastig kan zijn om verwachte foutberichten op te lossen en te voorkomen vanwege ontbrekende sleutels of onjuist benoemde taken.
Taakwaarden weergeven
De geretourneerde waarde van een taakwaarde voor elke uitvoering wordt weergegeven in het deelvenster Uitvoer van de details van de taakuitvoering. Zie De uitvoeringsgeschiedenis van de taak weergeven.