withWatermark

Hiermee definieert u een gebeurtenistijdwatermerk voor dit DataFrame. Met een watermerk wordt een bepaald tijdstip bijgehouden waarvoor we ervan uitgaan dat er geen late gegevens meer binnenkomen.

Syntaxis

withWatermark(eventTime: str, delayThreshold: str)

Parameterwaarden

Kenmerk Typ Beschrijving
eventTime str de naam van de kolom die de gebeurtenistijd van de rij bevat.
delayThreshold str de minimale vertraging om te wachten tot de gegevens te laat aankomen, ten opzichte van de meest recente record die is verwerkt in de vorm van een interval (bijvoorbeeld '1 minuut' of '5 uur').

Retouren

DataFrame: DataFrame met watermerk.

Aantekeningen

Dit is alleen een functie voor Gestructureerd streamen.

Spark gebruikt dit watermerk voor verschillende doeleinden:

  • Om te weten wanneer een bepaalde tijdvensteraggregatie kan worden voltooid en dus kan worden verzonden wanneer uitvoermodi worden gebruikt die geen updates toestaan.
  • Om de hoeveelheid status te minimaliseren die we moeten behouden voor lopende aggregaties.

Het huidige watermerk wordt berekend door te kijken naar alle MAX(eventTime) partities in de query minus een opgegeven delayThresholdgebruiker. Vanwege de kosten van het coƶrdineren van deze waarde tussen partities, is het werkelijke watermerk dat wordt gebruikt, alleen gegarandeerd ten minste delayThreshold achter de werkelijke gebeurtenistijd.

Examples

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]