withWatermark

Определяет подложку времени события для этого кадра данных. Подложка отслеживает точку во времени, до которой мы предполагаем, что больше поздних данных не будет поступать.

Синтаксис

withWatermark(eventTime: str, delayThreshold: str)

Параметры

Параметр Тип Описание
eventTime str имя столбца, содержащего время события строки.
delayThreshold str минимальная задержка для ожидания поступления данных в секунду относительно последней записи, которая была обработана в виде интервала (например, "1 минута" или "5 часов").

Возвраты

DataFrame: подложка кадра данных.

Примечания

Это функция только для структурированной потоковой передачи.

Spark будет использовать этот водяной знак для нескольких целей:

  • Чтобы узнать, когда агрегирование заданного периода времени может быть завершено и таким образом может быть выдано при использовании режимов вывода, которые не разрешают обновления.
  • Чтобы свести к минимуму количество состояний, которые необходимо сохранить для агрегатов.

Текущая подложка вычисляется путем просмотра MAX(eventTime) всех секций в запросе минус указанного delayThresholdпользователя. Из-за затрат на согласование этого значения между секциями фактический водяной знак, используемый, гарантируется только за delayThreshold фактическим временем события.

Примеры

from pyspark.sql import Row
from pyspark.sql.functions import timestamp_seconds
df = spark.readStream.format("rate").load().selectExpr(
    "value % 5 AS value", "timestamp")
df.select("value", df.timestamp.alias("time")).withWatermark("time", '10 minutes')
# DataFrame[value: bigint, time: timestamp]