Pular para o conteúdo principal

removerDuplicadosDentroDaMarcaD'água

Retorna um novo DataFrame com as linhas duplicadas removidas, opcionalmente considerando apenas determinadas colunas, dentro da marca d'á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 serem usadas para comparação de duplicados (default Todas as colunas).

Devoluções

DataFrame: DataFrame sem duplicados.

Notas

Isso só funciona com DataFrame de transmissão, e a marca d'água para o DataFrame de entrada deve ser definida via withWatermark.

Para um DataFrame de transmissão, isso manterá todos os dados entre os gatilhos como estado intermediário para descartar linhas duplicadas. O estado será mantido para garantir a semântica: "Os eventos são desduplicados desde que a distância temporal entre os eventos mais antigos e mais recentes seja menor que o limite de atraso da marca d'água." Recomenda-se aos usuários que definam o limite de atraso da marca d'água para um valor superior à diferença máxima de data e hora entre eventos duplicados.

Nota: dados muito recentes, anteriores à marca d'água, serão descartados.

Compatível com Spark Connect.

Exemplos

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