Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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'])