Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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]