Delen via


Informatie delen tussen taken in een Azure Databricks-taak

U kunt taakwaarden gebruiken om willekeurige parameters door te geven tussen taken in een Azure Databricks-taak. U geeft taakwaarden door met behulp van de subutiliteit taskValues in Databricks Utilities. De subutiliteit taskValues biedt een eenvoudige API waarmee taken waarden kunnen uitvoeren waarnaar in volgende taken kan worden verwezen, waardoor het eenvoudiger is om expressieve werkstromen te maken. U kunt bijvoorbeeld id's of metrische gegevens communiceren, zoals informatie over de evaluatie van een machine learning-model, tussen verschillende taken binnen een taakuitvoering. Elke taak kan meerdere taakwaarden instellen en ophalen. Taakwaarden kunnen worden ingesteld en opgehaald in Python-notebooks.

Notitie

U kunt nu dynamische waardeverwijzingen in uw notebooks gebruiken om te verwijzen naar taakwaarden die zijn ingesteld in upstream-taken. Als u bijvoorbeeld wilt verwijzen naar de waarde met de sleutel name die door de taak Get_user_datais ingesteld, gebruikt u {{tasks.Get_user_data.values.name}}. Omdat ze kunnen worden gebruikt met meerdere taaktypen, raadt Databricks aan om dynamische waardeverwijzingen te gebruiken in plaats van dbutils.jobs.taskValues.get de taakwaarde programmatisch op te halen.

Taakwaarden gebruiken

De subutiliteit taskValues biedt twee opdrachten: dbutils.jobs.taskValues.set() een variabele instellen en dbutils.jobs.taskValues.get() een waarde ophalen. Stel dat u twee notebooktaken hebt: Get_user_data en Analyze_user_data u wilt de naam en leeftijd van een gebruiker doorgeven van de Get_user_data taak aan de Analyze_user_data taak. In het volgende voorbeeld wordt de naam en leeftijd van de gebruiker in de Get_user_data taak ingesteld:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key is de naam van de taakwaardesleutel. Deze naam moet uniek zijn voor de taak.
  • value is de waarde voor de sleutel van deze taakwaarde. Met deze opdracht moet de waarde intern in JSON-indeling kunnen worden vertegenwoordigd. De grootte van de JSON-weergave van de waarde mag niet groter zijn dan 48 KiB.

In het volgende voorbeeld worden vervolgens de waarden in de Analyze_user_data taak opgehaald:

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 is de naam van de taaktaak die de waarde instelt. Als de opdracht deze taak niet kan vinden, wordt er een ValueError gegenereerd.
  • key is de naam van de sleutel van de taakwaarde. Als de opdracht de sleutel van deze taakwaarde niet kan vinden, wordt er een ValueError gegenereerd (tenzij default opgegeven).
  • default is een optionele waarde die wordt geretourneerd als key deze niet kan worden gevonden. default kan niet zijn None.
  • debugValue is een optionele waarde die wordt geretourneerd als u de taakwaarde probeert op te halen vanuit een notebook die buiten een taak wordt uitgevoerd. Dit kan handig zijn tijdens foutopsporing wanneer u uw notebook handmatig wilt uitvoeren en een bepaalde waarde wilt retourneren in plaats van een standaardwaarde TypeError in te stellen. debugValue kan niet zijn None.

Als complexer voorbeeld van het delen van context tussen taken, stel dat u een toepassing hebt die verschillende machine learning-modellen bevat om het inkomen van een persoon te voorspellen op basis van verschillende persoonlijke kenmerken en een taak die het beste model bepaalt dat moet worden gebruikt op basis van de uitvoer van de vorige drie taken. De modellen worden uitgevoerd door drie taken met de naam Logistic_Regression, Decision_Treeen Random_Foresten de Best_Model taak bepaalt het beste model dat moet worden gebruikt op basis van de uitvoer van de vorige drie taken.

Graph of example classification application

De nauwkeurigheid voor elk model (hoe goed de classificatie het inkomen voorspelt) wordt doorgegeven aan een taakwaarde om het best presterende algoritme te bepalen. Het notebook voor logistieke regressie dat aan de Logistic_Regression taak is gekoppeld, bevat bijvoorbeeld de volgende opdracht:

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

Elke modeltaak stelt een waarde voor de model_performance sleutel in. De Best_Model taak leest de waarde voor elke taak en gebruikt die waarde om het optimale model te bepalen. In het volgende voorbeeld wordt de waarde gelezen die door de Logistic_Regression taak is ingesteld:

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

Taakwaarden weergeven

Als u de waarde van een taakwaarde wilt weergeven nadat een taak is uitgevoerd, gaat u naar de uitvoeringsgeschiedenis van de taak voor de taak. De resultaten van de taakwaarde worden weergegeven in het deelvenster Uitvoer .