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.
Returnera en ny DataFrame med duplicerade rader borttagna, om du bara vill överväga vissa kolumner, inom vattenstämpeln.
Syntax
dropDuplicatesWithinWatermark(subset: Optional[List[str]] = None)
Parameters
| Parameter | Type | Beskrivning |
|---|---|---|
subset |
Lista över kolumnnamn, valfritt | Lista över kolumner som ska användas för dubblettjämförelse (standard alla kolumner). |
Retur
DataFrame: DataFrame utan dubbletter.
Notes
Detta fungerar bara med strömmande DataFrame, och vattenstämpeln för indataramen måste anges via withWatermark.
För en strömmande DataFrame behåller detta alla data över utlösare som mellanliggande tillstånd för att släppa duplicerade rader. Tillståndet kommer att hållas för att garantera semantiken, "Händelser dedupliceras så länge tidsavståndet för tidigaste och senaste händelser är mindre än fördröjningströskeln för vattenstämpel." Användarna uppmanas att ange tröskelvärdet för fördröjning för vattenstämpeln som är längre än maximala tidsstämpelskillnader mellan duplicerade händelser.
Obs! För sena data som är äldre än vattenstämpeln kommer att tas bort.
Stöder Spark Connect.
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]
df.dropDuplicatesWithinWatermark()
df.dropDuplicatesWithinWatermark(['value'])