dropDuplicatesWithinWatermark

Devolva um novo DataFrame com linhas duplicadas removidas, opcionalmente apenas considerando certas colunas, dentro da marca de água.

Sintaxe

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

Parâmetros

Parâmetro Tipo Descrição
subset Lista de nomes de colunas, opcional Lista de colunas a usar para comparação duplicada (por defeito Todas as colunas).

Devoluções

DataFrame: DataFrame sem duplicados.

Notes

Isto só funciona com DataFrame em streaming, e a marca de água para o DataFrame de entrada deve ser definida via withWatermark.

Para um DataFrame em streaming, isto manterá todos os dados entre triggers como estado intermédio para eliminar linhas duplicadas. O estado será mantido para garantir a semântica, "Os eventos são desduplicados desde que a distância temporal dos eventos mais antigos e mais recentes seja menor do que o limiar de atraso da marca de água." Os utilizadores são encorajados a definir o limiar de atraso da marca de água maior do que as diferenças máximas de carimbo temporal entre eventos duplicados.

Nota: dados mais antigos do que a marca de água serão eliminados tardiamente.

Suporta o Spark Connect.

Exemplos

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