EliminarDuplicadosDentroDeMarcaDeAgua

Devuelve un nuevo DataFrame con filas duplicadas eliminadas, opcionalmente solo teniendo en cuenta ciertas columnas, dentro de la marca de agua.

Sintaxis

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

Parámetros

Parámetro Tipo Descripción
subset Lista de nombres de columna, opcional Lista de columnas que se van a usar para la comparación duplicada (todas las columnas predeterminadas).

Devoluciones

DataFrame: DataFrame sin duplicados.

Notas

Esto solo funciona con dataframe de streaming y la marca de agua para el dataframe de entrada debe establecerse a través withWatermarkde .

En el caso de un DataFrame de streaming, esto mantendrá todos los datos entre desencadenadores como estado intermedio para quitar filas duplicadas. El estado se mantendrá para garantizar la semántica: "Los eventos se desduplican siempre que la distancia de tiempo de los eventos más antiguos y más recientes sea menor que el umbral de retraso de la marca de agua". Se recomienda a los usuarios establecer el umbral de retraso de la marca de agua más larga que las diferencias máximas de marca de tiempo entre eventos duplicados.

Nota: se quitarán los datos demasiado tarde más antiguos que la marca de agua.

Soporta Spark Connect.

Ejemplos

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