Compartilhar via


withWatermark

Define uma marca d'água de hora do evento para este DataFrame. Uma marca d'água rastreia um ponto no tempo antes do qual presumimos que não haverá mais dados atrasados.

Sintaxe

withWatermark(eventTime: str, delayThreshold: str)

Parâmetros

Parâmetro Tipo Descrição
eventTime str o nome da coluna que contém a hora do evento da linha.
delayThreshold str o atraso mínimo para aguardar até que os dados cheguem atrasados, em relação ao registro mais recente que foi processado na forma de um intervalo (por exemplo, "1 minuto" ou "5 horas").

Devoluções

DataFrame: DataFrame com marca d'água.

Observações

Esse é um recurso somente para Streaming Estruturado.

O Spark usará essa marca d'água para várias finalidades:

  • Para saber quando uma agregação de janela de tempo determinada pode ser finalizada e, portanto, pode ser emitida ao usar modos de saída que não permitem atualizações.
  • Para minimizar a quantidade de estado que precisamos manter para agregações em andamento.

A marca d'água atual é calculada examinando o MAX(eventTime) visto em todas as partições na consulta menos um usuário especificado delayThreshold. Devido ao custo de coordenar esse valor entre partições, a marca d'água real usada só tem a garantia de estar, pelo menos delayThreshold , por trás do tempo real do evento.

Exemplos

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]