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 |
|---|---|---|
| str | O nome da coluna que contém o horário do evento na linha. |
| 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
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]