Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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'])