Tevékenységértékek használata a tevékenységek közötti információátadáshoz
A tevékenységértékek a Databricks Utilities taskValues
alutasságára vonatkoznak, amely lehetővé teszi, hogy tetszőleges értékeket adjon át a Databricks-feladatok tevékenységei 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
Az al segédprogramok dbutils.jobs.taskValues.set()
és dbutils.jobs.taskValues.get()
csak Python-jegyzetfüzetekben érhetők el. A tevékenységértékekre dinamikus értékhivatkozásokkal hivatkozhat minden olyan tevékenységhez, amely támogatja a paramétereket. Lásd: Referenciatevékenység-értékek.
Tevékenységértékek beállítása
Feladatértékek beállítása Python-jegyzetfüzetekben az alhatóság dbutils.jobs.taskValues.set()
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)
Tevékenységértékek hivatkozása
A Databricks azt javasolja, hogy a tevékenységértékekre a dinamikus érték referenciamintával {{tasks.<task_name>.values.<value_name>}}
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 szintaxist{{tasks.product_inventory.values.prod_list}}
.product_inventory
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ó. Ez debugValue
lehetővé teszi, hogy a jegyzetfüzetek manuális kódfejlesztése és tesztelése során használandó statikus értéket állítson be, mielőtt feladatként ütemezi a jegyzetfüzetet.
Az alábbi példa a kulcskészlet order_status
értékét egy tevékenységnévben order_lookup
kapja meg. 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.