Pular para o conteúdo principal

com marca d'água

Define uma marca d'água de tempo do evento para este DataFrame. Uma marca d'água marca um ponto no tempo antes do qual presumimos que não chegarão 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 o horário do evento na linha.

delayThreshold

str

o atraso mínimo de espera para que os dados cheguem com atraso, em relação ao último registro que foi processado na forma de um intervalo (por exemplo "1 minuto" ou "5 horas").

Parâmetro

Tipo

Descrição

eventTime

str

O nome da coluna que contém o horário do evento na linha.

delayThreshold

str

o atraso mínimo de espera para que os dados cheguem com atraso, em relação ao último registro que foi processado na forma de um intervalo (por exemplo "1 minuto" ou "5 horas").

Devoluções​

DataFrame: DataFrame com marca d'água.

Notas​

Este é um recurso apenas para transmissão estruturada.

A Spark utilizará esta marca d'água para diversos fins:

  • Para saber quando uma determinada agregação de janela de tempo 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 contínuas.

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

Exemplos​

Python
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]