Dela information mellan uppgifter i ett Azure Databricks-jobb
Du kan använda aktivitetsvärden för att skicka godtyckliga parametrar mellan aktiviteter i ett Azure Databricks-jobb. Du skickar aktivitetsvärden med hjälp av underutnyttjandet taskValues i Databricks Utilities. Underutnyttjandet taskValues tillhandahåller ett enkelt API som gör det möjligt för aktiviteter att mata ut värden som kan refereras till i efterföljande uppgifter, vilket gör det enklare att skapa mer uttrycksfulla arbetsflöden. Du kan till exempel kommunicera identifierare eller mått, till exempel information om utvärderingen av en maskininlärningsmodell, mellan olika uppgifter inom en jobbkörning. Varje aktivitet kan ange och hämta flera aktivitetsvärden. Uppgiftsvärden kan anges och hämtas i Python-notebook-filer.
Kommentar
Nu kan du använda referenser för dynamiskt värde i dina notebook-filer för att referera till aktivitetsvärden som angetts i överordnade aktiviteter. Om du till exempel vill referera till värdet med nyckeln name
som angetts av aktiviteten Get_user_data
använder du {{tasks.Get_user_data.values.name}}
. Eftersom de kan användas med flera aktivitetstyper rekommenderar Databricks att du använder referenser för dynamiskt värde i stället för dbutils.jobs.taskValues.get
att hämta aktivitetsvärdet programmatiskt.
Använda aktivitetsvärden
Underutnyttjandet taskValues innehåller två kommandon: dbutils.jobs.taskValues.set()
för att ange en variabel och dbutils.jobs.taskValues.get()
för att hämta ett värde. Anta att du har två notebook-uppgifter: Get_user_data
och Analyze_user_data
vill skicka en användares namn och ålder från Get_user_data
uppgiften till uppgiften Analyze_user_data
. I följande exempel anges användarens namn och ålder i Get_user_data
uppgiften:
dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
key
är namnet på aktivitetsvärdenyckeln. Det här namnet måste vara unikt för aktiviteten.value
är värdet för det här aktivitetsvärdets nyckel. Det här kommandot måste kunna representera värdet internt i JSON-format. Storleken på JSON-representationen av värdet får inte överstiga 48 KiB.
I följande exempel hämtas sedan värdena i Analyze_user_data
uppgiften:
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
är namnet på jobbaktiviteten som anger värdet. Om kommandot inte kan hitta den här uppgiften utlöses enValueError
.key
är namnet på aktivitetsvärdets nyckel. Om kommandot inte kan hitta det här aktivitetsvärdets nyckel utlöses enValueError
(såvida intedefault
anges).default
är ett valfritt värde som returneras omkey
det inte går att hitta.default
kan inte varaNone
.debugValue
är ett valfritt värde som returneras om du försöker hämta aktivitetsvärdet inifrån en notebook-fil som körs utanför ett jobb. Detta kan vara användbart vid felsökning när du vill köra notebook-filen manuellt och returnera ett värde i stället för att höja ettTypeError
som standard.debugValue
kan inte varaNone
.
Som ett mer komplext exempel på delningskontext mellan uppgifter antar vi att du har ett program som innehåller flera maskininlärningsmodeller för att förutsäga en individs intäkter med olika personliga attribut och en uppgift som avgör vilken modell som är bäst att använda baserat på utdata från de föregående tre uppgifterna. Modellerna körs av tre aktiviteter med namnet Logistic_Regression
, Decision_Tree
och Random_Forest
, och Best_Model
uppgiften bestämmer den bästa modellen att använda baserat på utdata från de föregående tre aktiviteterna.
Noggrannheten för varje modell (hur väl klassificeraren förutsäger intäkter) skickas i ett aktivitetsvärde för att fastställa den algoritm som presterar bäst. Till exempel innehåller den logistiska regressionsanteckningsboken som är associerad med Logistic_Regression
uppgiften följande kommando:
dbutils.jobs.taskValues.set(key = "model_performance", value = result)
Varje modellaktivitet anger ett värde för model_performance
nyckeln. Uppgiften Best_Model
läser värdet för varje aktivitet och använder det värdet för att fastställa den optimala modellen. I följande exempel läss värdet som angetts av Logistic_Regression
uppgiften:
logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")
Visa aktivitetsvärden
Om du vill visa värdet för ett aktivitetsvärde när en aktivitet har körts går du till aktivitetskörningshistoriken för aktiviteten. Resultatet av aktivitetsvärdet visas på panelen Utdata .