Compartilhar via


dropDuplicatesWithinWatermark

Retorne um novo DataFrame com 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 coluna, opcional Lista de colunas a serem usadas para comparação duplicada (todas as colunas padrão).

Devoluções

DataFrame: DataFrame sem duplicatas.

Observações

Isso só funciona com o DataFrame de streaming e a marca d'água para o DataFrame de entrada deve ser definida por meio de withWatermark.

Para um DataFrame de streaming, isso manterá todos os dados entre gatilhos como estado intermediário para remover linhas duplicadas. O estado será mantido para garantir a semântica: "Os eventos são duplicados, desde que a distância de tempo dos eventos mais antigos e mais recentes seja menor que o limite de atraso da marca d'água". Os usuários são incentivados a definir o limite de atraso da marca d'água por mais tempo do que as diferenças máximas de carimbo de data/hora entre eventos duplicados.

Observação: dados tarde demais mais antigos do que a marca d'água serão descartados.

Dá suporte ao 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'])