Наблюдение

Класс для наблюдения за именованными метриками в кадре данных.

Метрики — это агрегирование выражений, применяемых к кадру данных при обработке действием. Экземпляр наблюдения собирает метрики во время выполнения первого действия. Последующие действия не изменяют метрики, возвращаемые Observation.get. Получение метрики с помощью Observation.get блоков до тех пор, пока первое действие не завершится, и метрики становятся доступными.

Синтаксис

from pyspark.sql import Observation

observation = Observation(name=<name>)

Параметры

Параметр Тип Описание
name str, необязательный Имя наблюдения и метрики. По умолчанию используется случайная строка UUID.

Свойства

Недвижимость Описание
get Возвращает наблюдаемые метрики в виде словаря. Ожидает, пока наблюдаемый набор данных завершит свое первое действие. Доступен только результат первого действия.

Примечания

Этот класс не поддерживает потоковые наборы данных.

Столбцы метрик должны содержать литерал (например, lit(42)), или содержать одну или несколько агрегатных функций (например, sum(a) или sum(a + b) + avg(c) - lit(1)). Выражения, содержащие ссылки на столбцы входного кадра данных, всегда должны быть упакованы в агрегатную функцию.

Примеры

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()
2
observation.get
{'count': 2, 'max(age)': 5}