Információk megosztása egy Azure Databricks-feladat tevékenységei között

A tevékenységértékekkel tetszőleges paramétereket adhat át egy Azure Databricks-feladat tevékenységei között. Feladatértékeket a Databricks Utilities taskValues alutility elemével ad át. A taskValues subutility egy egyszerű API-t biztosít, amely lehetővé teszi a tevékenységek számára a későbbi tevékenységekben hivatkozható értékek kimenetét, így egyszerűbbé válik a kifejezőbb munkafolyamatok létrehozása. Az azonosítókat és metrikákat, például egy gépi tanulási modell kiértékelési adatait kommunikálhatja a feladatfuttatás különböző tevékenységei között. Minden tevékenység több tevékenységértéket is beállíthat és lekérhet. A tevékenységértékek Python-jegyzetfüzetekben állíthatók be és kérhetők le.

Megjegyzés:

Mostantól a jegyzetfüzetekben dinamikus értékhivatkozásokkal hivatkozhat a felsőbb rétegbeli tevékenységekben beállított tevékenységértékekre. Ha például a tevékenység Get_user_dataáltal beállított kulccsal name szeretne hivatkozni az értékre, használja a következőt{{tasks.Get_user_data.values.name}}: Mivel több tevékenységtípussal is használhatók, a Databricks ahelyett, hogy programozott módon szeretné lekérni a tevékenység értékét, dinamikus értékhivatkozásokat dbutils.jobs.taskValues.get javasol.

Tevékenységértékek használata

A taskValues subutility két parancsot biztosít: dbutils.jobs.taskValues.set() egy változó beállítását és dbutils.jobs.taskValues.get() egy érték lekérését. Tegyük fel, hogy két jegyzetfüzetfeladata van: Get_user_data és Analyze_user_data át szeretné adni egy felhasználó nevét és életkorát a Get_user_data feladatból a Analyze_user_data tevékenységnek. Az alábbi példa a felhasználó nevét és életkorát állítja be a Get_user_data feladatban:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key a tevékenység értékkulcsának neve. Ennek a névnek egyedinek kell lennie a tevékenységhez.
  • value a tevékenységérték kulcsának értéke. Ennek a parancsnak képesnek kell lennie az érték belső JSON formátumban való megjelenítésére. Az érték JSON-ábrázolásának mérete nem haladhatja meg a 48 KiB-t.

Az alábbi példa ezután lekéri a tevékenység értékeit Analyze_user_data :

dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
  • taskKey az értéket megállító feladatfeladat neve. Ha a parancs nem találja ezt a feladatot, megjelenik egy ValueError .
  • key a tevékenységérték kulcsának neve. Ha a parancs nem találja ennek a tevékenységértéknek a kulcsát, a rendszer felvesz egy ValueError értéket (hacsak nincs default megadva).
  • default egy nem kötelező érték, amely akkor lesz visszaadva, ha key nem található. default nem lehet None.
  • debugValue nem kötelező érték, amelyet akkor ad vissza a rendszer, ha egy feladaton kívül futó jegyzetfüzetből próbálja lekérni a feladat értékét. Ez akkor lehet hasznos a hibakeresés során, ha manuálisan szeretné futtatni a jegyzetfüzetet, és az alapértelmezett érték növelése TypeError helyett valamilyen értéket ad vissza. debugValue nem lehet None.

Tegyük fel, hogy egy összetettebb példa a tevékenységek közötti megosztásra, tegyük fel, hogy egy olyan alkalmazással rendelkezik, amely több gépi tanulási modellt tartalmaz az egyén jövedelmének előrejelzéséhez különböző személyes attribútumok alapján, valamint egy olyan feladat, amely az előző három tevékenység kimenete alapján határozza meg a legjobban használható modellt. A modelleket három, nevesített Logistic_Regressiontevékenység futtatja, Decision_Treeés Random_Foresta Best_Model tevékenység az előző három tevékenység kimenete alapján határozza meg a legjobban használni kívánt modellt.

Graph of example classification application

Az egyes modellek pontossága (hogy az osztályozó milyen jól előrejelzi a bevételt) egy tevékenységértékben van átadva a legjobban teljesítő algoritmus meghatározásához. A feladathoz Logistic_Regression társított logisztikai regressziós jegyzetfüzet például a következő parancsot tartalmazza:

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

Minden modellfeladat beállít egy értéket a model_performance kulcshoz. A Best_Model tevékenység beolvassa az egyes tevékenységek értékét, és ezt az értéket használja az optimális modell meghatározásához. Az alábbi példa beolvassa a tevékenység által Logistic_Regression beállított értéket:

logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")

Tevékenységértékek megtekintése

Ha meg szeretné tekinteni egy tevékenységérték értékét egy tevékenység futtatása után, nyissa meg a tevékenység tevékenységfuttatási előzményeit . A tevékenység értékének eredményei a Kimenet panelen jelennek meg.