medWatermark

Definierar en vattenstämpel för händelsetid för den här dataramen. En vattenstämpel spårar en tidpunkt innan vi antar att inga fler sena data kommer att tas emot.

Syntax

withWatermark(eventTime: str, delayThreshold: str)

Parameters

Parameter Type Beskrivning
eventTime str namnet på kolumnen som innehåller händelsetiden för raden.
delayThreshold str den minsta fördröjningen att vänta tills data kommer för sent, i förhållande till den senaste posten som har bearbetats i form av ett intervall (t.ex. "1 minut" eller "5 timmar").

Retur

DataFrame: Vattenstämplad dataram.

Notes

Det här är bara en funktion för strukturerad direktuppspelning.

Spark använder vattenstämpeln i flera syften:

  • Att veta när en angiven tidsfönsteraggregering kan slutföras och därför kan genereras när du använder utdatalägen som inte tillåter uppdateringar.
  • För att minimera mängden tillstånd som vi behöver behålla för pågående aggregeringar.

Den aktuella vattenstämpeln beräknas genom att titta på alla MAX(eventTime) partitioner i frågan minus en angiven delayThresholdanvändare. På grund av kostnaden för att samordna det här värdet mellan partitioner garanteras den faktiska vattenstämpeln bara ligga minst delayThreshold bakom den faktiska händelsetiden.

Exempel

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]