Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma atualização completa de uma tabela de streaming descarta todos os dados e metadados existentes e reinicia o fluxo desde o início. Especificamente, ele trunca a tabela de streaming, remove todos os dados de ponto de verificação e reinicia o processo de streaming com novos pontos de verificação para cada gravação de fluxo na tabela. Esta página descreve quando você pode ser obrigado a executar uma atualização completa e o impacto da execução de uma atualização completa. Ele também inclui as práticas recomendadas em torno de atualizações completas.
Para obter diretrizes sobre como disparar uma atualização completa, consulte Executar uma atualização de pipeline.
Impacto nas fontes de dados
Uma atualização completa remove todos os dados existentes da tabela de streaming. Se a fonte de dados tiver limites de retenção, como tópicos do Kafka com curtos períodos de retenção, alguns dados históricos poderão se tornar irrecuperáveis após uma atualização completa.
Por exemplo, se sua origem for Kafka com retenção de 24 horas e você executar uma atualização completa após essa janela, as mensagens mais antigas não estarão mais disponíveis e não poderão ser reprocessadas.
Observação
Atualizações completas não são recomendadas para cargas de trabalho de streaming de alto volume ou quando a retenção upstream impede a reprodução de dados históricos.
Se a tabela de streaming tiver tabelas downstream dependentes, o pipeline falhará até que essas tabelas também sejam totalmente atualizadas, a menos que a tabela de streaming tenha skipChangeCommits habilitado. Visões materializadas downstream também devem ser totalmente atualizadas.
Quando executar uma atualização completa
As atualizações completas nos Pipelines Declarativos do Lakeflow Spark devem ser disparadas explicitamente. Você pode executar uma atualização completa clicando em Atualização Completa na interface do usuário do pipeline ou habilitando a atualização completa automática no Lakeflow Connect.
Uma atualização completa é recomendada quando as alterações impedem que uma consulta de streaming seja retomada com segurança de seu ponto de verificação existente ou quando os dados processados anteriormente se tornam inconsistentes com a lógica, o esquema ou a configuração de origem atualizados. As seções a seguir descrevem cenários comuns.
Alterações feitas no esquema
As seguintes alterações de esquema na tabela de destino não são compatíveis com versões anteriores e exigem uma atualização completa:
- Renomeando colunas sem o modo de mapeamento de coluna habilitado.
- Alterando colunas de deduplicação.
- Modificando tipos de dados de coluna, incluindo:
- Restrição de tipo (por exemplo,
BIGINT → INTouDOUBLE → FLOAT). - Alterações de tipo incompatíveis (por exemplo,
STRING → INT).
- Restrição de tipo (por exemplo,
- Exclusão rígida de colunas do esquema de tabela.
Para esses tipos de alterações de esquema, o Databricks recomenda criar uma nova coluna com o esquema ou o nome desejado e, em seguida, usar uma exibição na parte superior da tabela de streaming para unir os valores antigos e novos.
Alterações no layout de dados físicos
As seguintes alterações de layout de dados físicos exigem uma atualização completa:
- Migrando do particionamento herdado para um novo esquema de clustering.
Alterações na origem a montante
As seguintes alterações de origem upstream exigem uma atualização completa:
- Modificando as tabelas de origem lidas pela consulta de streaming.
- Alternar entre tipos de origem (por exemplo, Kafka para Delta ou Carregador Automático para Kafka).
- Alterando os locais de origem, como caminhos das tabelas ou assinaturas de tópicos do Kafka.
- Descartando e recriando uma tabela Delta de origem, mesmo quando o esquema permanece inalterado.
Alterações de processamento de estado
As seguintes alterações de processamento com estado exigem uma atualização completa:
- Modificando chaves de agrupamento de agregação ou funções de agregação.
- Adicionando ou removendo agregações.
- Alterando chaves de junção ou tipos de junção.
- Adicionando ou removendo junções.
- Modificando colunas de deduplicação ou lógica de deduplicação.
Problemas de continuidade de dados
Uma atualização completa pode ser necessária quando a continuidade dos dados é comprometida:
- Os logs CDC ficaram indisponíveis devido à expiração do período de retenção.
- Corrupção ou exclusão do diretório de ponto de verificação de streaming.
- Corrupção ou perda de arquivos de rastreamento ou localização de esquema.
Para obter mais informações sobre como recuperar um pipeline após uma falha de ponto de verificação, consulte Recuperar um pipeline após uma falha de ponto de verificação em streaming.
Limitações
As limitações a seguir se aplicam a atualizações completas. Consulte as práticas recomendadas para obter informações para ajudar a trabalhar dentro dessas limitações.
- Uma atualização completa não reprocessa dados, a menos que sua fonte mantenha o conjunto de dados histórico completo.
- Grandes conjuntos de dados podem tornar as atualizações completas caras e demoradas.
- Os consumidores downstream que dependem da tabela podem falhar ou retornar resultados incompletos até que a atualização seja concluída.
Práticas recomendadas
| Situação | Práticas recomendadas |
|---|---|
| Design para estabilidade | Planeje seu esquema para evitar alterações que exijam uma atualização completa. A adição de colunas geralmente é segura, enquanto modificar colunas existentes ou esquemas de particionamento normalmente requer a recompilação da tabela. |
| Transmitir de fontes com curtos períodos de retenção | Transmitir de fontes, como um tópico Kafka, que não têm longos períodos de retenção significa que uma atualização completa perde dados que não estão mais na fonte. Para evitar a perda de dados históricos, transmita dados brutos para uma tabela de fluxo contínuo (uma tabela de bronze, na arquitetura de medalhão). Use tipos de coluna flexíveis (variante ou cadeia de caracteres, por exemplo), para evitar que essa tabela exija uma atualização completa se os dados upstream forem alterados. Essa tabela pode armazenar dados históricos e ser usada por tabelas de streaming downstream (que podem ter tipos mais rigorosos ou outras alterações estruturais). Se as tabelas downstream exigirem uma atualização completa, essa tabela terá dados históricos, sem exigir uma atualização completa em si. |
| Considere alternativas antes de executar uma atualização completa | As alternativas incluem:
|
| Quando uma atualização completa é necessária | Siga estas práticas recomendadas quando uma atualização completa for necessária:
|
Para preencher os dados após uma atualização completa, você pode criar um append oncefluxo. Isso realiza um backfill por uma única vez sem continuar após o primeiro backfill. O código permanece no pipeline e, se o pipeline for totalmente atualizado novamente, o backfill será executado novamente.