Freigeben über


dropDuplicatesWithinWatermark

Zurückgeben eines neuen DataFrames mit entfernten doppelten Zeilen, optional nur unter Berücksichtigung bestimmter Spalten innerhalb des Wasserzeichens.

Syntax

dropDuplicatesWithinWatermark(subset: Optional[List[str]] = None)

Parameter

Parameter Typ Beschreibung
subset Liste der Spaltennamen, optional Liste der Spalten, die für den doppelten Vergleich verwendet werden sollen (Standard "Alle Spalten").

Rückkehr

DataFrame: DataFrame ohne Duplikate.

Hinweise

Dies funktioniert nur beim Streamen von DataFrame, und das Wasserzeichen für den Eingabedatenframe muss über withWatermarkfestgelegt werden.

Bei einem Streaming-DataFrame werden dadurch alle Daten über Trigger hinweg als Zwischenzustand beibehalten, um duplizierte Zeilen abzulegen. Der Zustand wird beibehalten, um die Semantik zu gewährleisten, "Ereignisse werden dedupliziert, solange der Zeitabstand der frühesten und neuesten Ereignisse kleiner als der Verzögerungsschwellenwert des Wasserzeichens ist." Benutzer werden ermutigt, den Verzögerungsschwellenwert des Wasserzeichens festzulegen, der länger als die maximalen Zeitstempelunterschiede zwischen duplizierten Ereignissen ist.

Hinweis: Zu späte Daten, die älter als Wasserzeichen sind, werden gelöscht.

Unterstützt Spark Connect.

Beispiele

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