withWatermark

Define una marca de agua de tiempo de evento para este DataFrame. Una marca de agua realiza un seguimiento de un momento dado antes del cual se supone que no llegarán más datos tarde.

Sintaxis

withWatermark(eventTime: str, delayThreshold: str)

Parámetros

Parámetro Tipo Descripción
eventTime str el nombre de la columna que contiene la hora del evento de la fila.
delayThreshold str el retraso mínimo para esperar a que los datos lleguen tarde, en relación con el registro más reciente que se ha procesado en forma de intervalo (por ejemplo, "1 minuto" o "5 horas").

Devoluciones

DataFrame: DataFrame con marca de agua.

Notas

Esta es una característica solo para Structured Streaming.

Spark usará esta marca de agua para varios propósitos:

  • Para saber cuándo se puede finalizar una agregación de período de tiempo determinada y, por tanto, se puede emitir cuando se usan modos de salida que no permiten actualizaciones.
  • Para minimizar la cantidad de estado que necesitamos mantener para las agregaciones en curso.

La marca de agua actual se calcula examinando la MAX(eventTime) vista en todas las particiones de la consulta menos un usuario especificado delayThreshold. Debido al costo de coordinar este valor entre particiones, solo se garantiza que la marca de agua real usada esté al menos delayThreshold detrás de la hora del evento real.

Ejemplos

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]