Tevékenységértékek használata a tevékenységek közötti információátadáshoz
Feladatértékek a Databricks segédprogramok taskValues
alsegédprogramjára hivatkoznak, amely lehetővé teszi, hogy tetszőleges értékeket adjon át a Databricks-feladatok feladatai között. Lásd: taskValues subutility (dbutils.jobs.taskValues).
Egy tevékenységben kulcs-érték párokat dbutils.jobs.taskValues.set()
adhat meg, majd a tevékenységnév és a kulcs használatával hivatkozhat az értékre a későbbi tevékenységekben.
Feljegyzés
Mivel dbutils.jobs.taskValues.set()
és dbutils.jobs.taskValues.get()
az dbutils.jobs.taskValues
altartalmában Python-függvények, csak olyan jegyzetfüzetekben használhatók, amelyekben a Python nyelvként van kiválasztva. A tevékenységértékekre azonban dinamikus értékhivatkozásokkal hivatkozhat minden olyan tevékenységhez, amely támogatja a paramétereket. Lásd: Referencia feladatértékek.
Tevékenységértékek beállítása
Python-jegyzetfüzetekben a feladatértékek beállítása a dbutils.jobs.taskValues.set()
segédprogram használatával.
A tevékenység értékkulcsainak sztringeknek kell lenniük. Minden kulcsnak egyedinek kell lennie, ha egy jegyzetfüzetben több tevékenységérték van definiálva.
A feladatértékeket manuálisan vagy programozott módon is hozzárendelheti a kulcsokhoz. Csak érvényes JSON-ként kifejezhető értékek engedélyezettek. Az érték JSON-ábrázolásának mérete nem haladhatja meg a 48 KiB-t.
Az alábbi példa például beállít egy statikus sztringet a kulcshoz fave_food
:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
Az alábbi példa egy jegyzetfüzet-tevékenységparaméter használatával kérdezi le egy adott rendelésszám összes rekordját, és visszaadja az aktuális rendelési állapotot és a rekordok teljes számát:
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])
Ezzel a mintával átadhatja az értékek listáját, majd az alsóbb rétegbeli logika koordinálására használhatja őket, például az egyes tevékenységekhez. Lásd: Paraméteres Azure Databricks-feladatfeladat futtatása ciklusban.
Az alábbi példa a termékazonosító különböző értékeit egy Python-listára bontja, és feladatértékként állítja be:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Feladatértékek hivatkozása
A Databricks azt javasolja, hogy a tevékenységértékekre a dinamikus értékhivatkozási minta {{tasks.<task_name>.values.<value_name>}}
használatával konfigurált tevékenységparaméterekként hivatkozzon.
Ha például egy nevesített tevékenység kulcsával prod_list
szeretne hivatkozni a tevékenység értékére, használja a szintaxistproduct_inventory
.{{tasks.product_inventory.values.prod_list}}
Lásd: Tevékenységparaméterek konfigurálása és Mi a dinamikus értékhivatkozás?
Használja a következő parancsot: dbutils.jobs.taskValues.get
A szintaxishoz dbutils.jobs.taskValues.get()
meg kell adni a felsőbb rétegbeli tevékenység nevét. Ez a szintaxis nem ajánlott, mivel több alárendelt tevékenység tevékenységértékeit is használhatja, ami azt jelenti, hogy a tevékenységnév megváltozásakor számos frissítésre van szükség.
Ezzel a szintaxissal megadhat egy értéket és egy default
debugValue
értéket. Az alapértelmezett érték akkor használatos, ha a kulcs nem található. A debugValue
lehetővé teszi egy statikus érték beállítását a jegyzetfüzetek manuális kódfejlesztése és tesztelése során, mielőtt feladatként ütemezi a jegyzetfüzetet.
Az alábbi példa lekéri a order_status
feladatnévben megadott kulcs order_lookup
értékét. Az érték Delivered
csak a jegyzetfüzet interaktív futtatásakor lesz visszaadva.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Feljegyzés
A Databricks nem javasolja az alapértelmezett értékek beállítását, mivel a hiányzó kulcsok vagy helytelenül elnevezett feladatok miatt nehéz lehet elhárítani és megelőzni a várt hibaüzeneteket.
Tevékenységértékek megtekintése
Az egyes futtatásokhoz tartozó tevékenységérték visszaadott értéke megjelenik a Tevékenységfuttatás részleteinek Kimeneti paneljén. Lásd: Feladatfuttatási előzmények megtekintése.