withWatermark

Definuje meze času události pro tento datový rámec. Vodoznak sleduje bod v čase, před kterým předpokládáme, že nedorazí žádná pozdější data.

Syntaxe

withWatermark(eventTime: str, delayThreshold: str)

Parametry

Parameter Typ Description
eventTime str název sloupce, který obsahuje čas události řádku.
delayThreshold str minimální zpoždění čekání na pozdní doručení dat vzhledem k nejnovějšímu záznamu, který byl zpracován ve formě intervalu (např. "1 minuta" nebo "5 hodin").

Návraty

DataFrame: Datový rámec s vodoznakem

Poznámky

Toto je funkce pouze pro strukturované streamování.

Spark použije tento vodoznak pro několik účelů:

  • Chcete-li zjistit, kdy se dá agregace časového intervalu dokončit, a tudíž je možné ji vygenerovat při použití výstupních režimů, které neumožňují aktualizace.
  • Abychom minimalizovali množství stavu, které musíme zachovat pro probíhající agregace.

Aktuální vodoznak se vypočítá tak, že se podíváte na MAX(eventTime) zobrazení ve všech oddílech v dotazu minus zadaný delayThresholduživatel . Vzhledem k nákladům na koordinování této hodnoty napříč oddíly je zaručeno, že skutečná hodnota se použije jenom za delayThreshold skutečnou dobou události.

Příklady

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]