Dela via


Använda aktivitetsvärden för att skicka information mellan aktiviteter

Aktivitetsvärden refererar till underutnyttjandet Databricks Utilities taskValues , som gör att du kan skicka godtyckliga värden mellan aktiviteter i ett Databricks-jobb. Se taskValues subutility (dbutils.jobs.taskValues).

Du anger ett nyckel/värde-par som använder dbutils.jobs.taskValues.set() i en aktivitet och kan sedan använda aktivitetsnamnet och nyckeln för att referera till värdet i efterföljande aktiviteter.

Kommentar

Underverktygen dbutils.jobs.taskValues.set() och dbutils.jobs.taskValues.get() är endast tillgängliga i Python-notebook-filer. Du kan referera till aktivitetsvärden med hjälp av dynamiska värdereferenser för alla aktiviteter som stöder parametrar. Se Referensaktivitetsvärden.

Ange aktivitetsvärden

Ange aktivitetsvärden i Python-notebook-filer med hjälp av underutnyttjandet dbutils.jobs.taskValues.set().

Aktivitetsvärdenycklar måste vara strängar. Varje nyckel måste vara unik om du har flera aktivitetsvärden definierade i en notebook-fil.

Du kan manuellt eller programmatiskt tilldela aktivitetsvärden till nycklar. Endast värden som kan uttryckas som giltig JSON tillåts. Storleken på JSON-representationen av värdet får inte överstiga 48 KiB.

I följande exempel anges till exempel en statisk sträng för nyckeln fave_food:

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

I följande exempel används en notebook-aktivitetsparameter för att fråga efter alla poster för ett visst ordernummer och returnera den aktuella orderstatusen och det totala antalet poster:

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])

Du kan skicka listor med värden med det här mönstret och sedan använda dem för att samordna nedströmslogik, till exempel för varje uppgift. Se Köra en parameteriserad Azure Databricks-jobbaktivitet i en loop.

I följande exempel extraheras de distinkta värdena för produkt-ID till en Python-lista och detta anges som ett aktivitetsvärde:

prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])

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

Referensaktivitetsvärden

Databricks rekommenderar att du refererar till aktivitetsvärden som aktivitetsparametrar som konfigurerats med hjälp av referensmönstret {{tasks.<task_name>.values.<value_name>}}för dynamiskt värde .

Om du till exempel vill referera till aktivitetsvärdet med nyckeln prod_list från en aktivitet med namnet product_inventoryanvänder du syntaxen {{tasks.product_inventory.values.prod_list}}.

Se Konfigurera aktivitetsparametrar och Vad är en referens för dynamiskt värde?

Använda dbutils.jobs.taskValues.get

Syntaxen dbutils.jobs.taskValues.get() kräver att du anger det överordnade aktivitetsnamnet. Den här syntaxen rekommenderas inte eftersom du kan använda aktivitetsvärden i flera underordnade aktiviteter, vilket innebär att många uppdateringar krävs om ett aktivitetsnamn ändras.

Med den här syntaxen kan du ange ett default värde och en debugValue. Standardvärdet används om nyckeln inte kan hittas. Med debugValue kan du ange ett statiskt värde som ska användas under manuell kodutveckling och testning i notebook-filer innan du schemalägger notebook-filen som en uppgift.

I följande exempel hämtas värdet för nyckeluppsättningen order_status i ett aktivitetsnamn order_lookup. Värdet Delivered returneras endast när notebook-filen körs interaktivt.

order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")

Kommentar

Databricks rekommenderar inte att du anger standardvärden eftersom de kan vara svåra att felsöka och förhindra förväntade felmeddelanden på grund av saknade nycklar eller felaktigt namngivna uppgifter.

Visa aktivitetsvärden

Det returnerade värdet för ett aktivitetsvärde för varje körning visas i panelen Utdata i aktivitetskörningsinformationen. Se Visa aktivitetskörningshistorik.