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