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_dataanvä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 en ValueError .
  • key är namnet på aktivitetsvärdets nyckel. Om kommandot inte kan hitta det här aktivitetsvärdets nyckel utlöses en ValueError (såvida inte default anges).
  • default är ett valfritt värde som returneras om key det inte går att hitta. default kan inte vara None.
  • 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 ett TypeError som standard. debugValue kan inte vara None.

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_Treeoch 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.

Graph of example classification application

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 .