Aller au contenu principal

Observation

Une classe pour observer des métriques nommées sur un DataFrame.

Les métriques sont des expressions d’agrégation appliquées au DataFrame pendant qu’il est traité par une action. Une instance d'Observation collecte les métriques lorsque la 1re action est exécutée. Les actions ultérieures ne modifient pas les métriques renvoyées par Observation.get. La récupération de la métrique via Observation.get bloque jusqu’à ce que la première action soit terminée et que les métriques deviennent disponibles.

Syntaxe

Python
from pyspark.sql import Observation

observation = Observation(name=<name>)

parameter

parameter

Type

Description

name

str, facultatif

Le nom de l'observation et la métrique. default à une chaîne UUID aléatoire.

parameter

Type

Description

name

str, facultatif

Le nom de l'observation et la métrique. default à une chaîne UUID aléatoire.

Propriétés

Propriété

Description

get

Retourne les métriques observées sous forme de dictionnaire. Attend que le dataset observé termine sa première action. Seul le résultat de la première action est disponible.

Propriété

Description

get

Retourne les métriques observées sous forme de dictionnaire. Attend que le dataset observé termine sa première action. Seul le résultat de la première action est disponible.

Notes

Cette classe ne prend pas en charge les datasets en streaming.

Les colonnes de métriques doivent contenir soit une valeur littérale (par exemple, lit(42)), soit une ou plusieurs fonctions d'agrégation (par exemple, sum(a) ou sum(a + b) + avg(c) - lit(1)). Les expressions qui contiennent des références aux colonnes du DataFrame d'entrée doivent toujours être enveloppées dans une fonction d'agrégation.

Exemples

Python
from pyspark.sql.functions import col, count, lit, max
from pyspark.sql import Observation

df = spark.createDataFrame([["Alice", 2], ["Bob", 5]], ["name", "age"])
observation = Observation("my metrics")
observed_df = df.observe(observation, count(lit(1)).alias("count"), max(col("age")))
observed_df.count()
Output
2
Python
observation.get
Output
{'count': 2, 'max(age)': 5}