dropDuplicatesWithinWatermark

Retourne un nouveau DataFrame avec des lignes en double supprimées, éventuellement uniquement compte tenu de certaines colonnes, dans le filigrane.

Syntaxe

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

Paramètres

Paramètre Type Description
subset Liste des noms de colonnes, facultatif Liste des colonnes à utiliser pour la comparaison en double (toutes les colonnes par défaut).

Retours

DataFrame: DataFrame sans doublons.

Remarques

Cela fonctionne uniquement avec le DataFrame de streaming, et le filigrane pour le DataFrame d’entrée doit être défini via withWatermark.

Pour un DataFrame de streaming, cela conserve toutes les données entre les déclencheurs en tant qu’état intermédiaire pour supprimer les lignes dupliquées. L’état est conservé pour garantir la sémantique : « Les événements sont dédupliqués tant que la distance de temps des événements les plus anciens et les derniers événements sont plus petits que le seuil de délai de filigrane ». Les utilisateurs sont encouragés à définir le seuil de délai de filigrane plus long que les différences d’horodatage maximales entre les événements dupliqués.

Remarque : les données trop tardives antérieures à la filigrane seront supprimées.

Prend en charge Spark Connect.

Exemples

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