Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Define uma marca de água de tempo de evento para este DataFrame. Uma marca de água acompanha um ponto no tempo antes do qual assumimos que não vão chegar mais dados tardios.
Sintaxe
withWatermark(eventTime: str, delayThreshold: str)
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
eventTime |
str | o nome da coluna que contém o tempo do evento da linha. |
delayThreshold |
str | o atraso mínimo para esperar que os dados cheguem atrasados, em relação ao registo mais recente que foi processado sob a forma de um intervalo (por exemplo, "1 minuto" ou "5 horas"). |
Devoluções
DataFrame: DataFrame com marca de água.
Notes
Esta é uma funcionalidade exclusiva para Streaming Estruturado.
A Spark irá usar esta marca de água para vários fins:
- Para saber quando uma dada janela temporal 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 de manter para agregações contínuas.
A marca de água atual é calculada observando o MAX(eventTime) visto em todas as partições da consulta, exceto um utilizador especificado delayThreshold. Devido ao custo de coordenar este valor entre partições, a marca de água real utilizada só é garantida que fica pelo delayThreshold menos atrá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]