dropDuplicatesWithinWatermark

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'])