Restaurar e reproduzir um pipeline
Beta
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
Uma transformação inadequada, um lote de registros de origem malformado ou uma alteração inesperada de esquema podem deixar as tabelas de um pipeline incorretas de um ponto conhecido no tempo em diante. A restauração retorna o pipeline para um ponto anterior ao problema para que você possa implantar uma correção e reprocessar apenas os dados afetados.
A retrocessão restaura versões de tabela, desvios de fonte de transmissão e estado do operador juntos, de modo que a repetição não ignore registros nem grave duplicatas. Três operações reprocessam dados e resolvem problemas diferentes:
- Rewind is for a recoverable pipeline that wrote incorrect data from a known point in time, such as after a bad transformation, malformed input, or a bad code deploy. It restores table data, source offsets, and operator state to a point before the problem and reprocesses only the affected data, keeping operator state. Data before that point is untouched.
- Full refresh reconstrói uma tabela a partir de todos os dados de origem disponíveis e descarta seu conteúdo atual. Use-o para recalcular tudo do zero ou quando uma alteração de código não for compatível com o estado existente.
- Reset de ponto de verificação recupera um pipeline cujo ponto de verificação é inválido ou está corrompido, ou que está bloqueado por uma alteração de código incompatível com o ponto de verificação. Ele reseta o ponto de verificação e continua avançando, preservando o conteúdo atual da tabela. O retrocesso não pode recuperar esses casos, porque ele não flexibiliza as regras de compatibilidade do Structured Streaming.
Requisitos
Obrigatório | Detalhe |
|---|---|
Canal | O pipeline deve estar no canal Preview . Consulte Configurar pipelines. |
Configuração | Defina a configuração do pipeline |
Modo do pipeline | Trigger and continuous pipelines. O modo de tempo real não é compatível. |
Fontes | Tabelas Delta, tabelas de transmissão, Kafka e Auto Loader. |
Destinos | Tabelas de transmissão e views materializadas. |
Fluxos | Fluxos de transmissão e fluxos de captura de dados de alterações (CDC), incluindo destinos SCD Tipo 1 e SCD Tipo 2. Há suporte para queries com estado, como agregações, joins e desduplicação. |
Cada fluxo no pipeline deve atender a estes requisitos. Enquanto pipelines.rewind.betaEnabled estiver true, um pipeline que contenha um fluxo que não atenda aos requisitos falha em suas atualizações. Confirme se cada fluxo atende aos requisitos acima antes de ativá-lo.
Um pipeline que tem pipelines.rewind.betaEnabled definido como true não pode retornar para o canal Atual até que o canal Atual seja atualizado para um Runtime que dê suporte ao retrocesso.
Como funcionam a restauração e a repetição
O retrocesso e a repetição são passos separados.
Rewind restaura cada tabela para a versão que ela continha em um ponto de retrocesso e reinicia os pontos de verificação de transmissão que rastreiam até onde cada fluxo foi lido. As suas transformações não são executadas e nenhum dado de origem é reprocessado.
O reprocessamento ocorre na próxima vez que o pipeline for executado. Ele reprocessa a partir do ponto de restauração usando a definição atual do pipeline, alcança o momento atual e, em seguida, retoma o processamento incremental normal. A restauração não inicia o pipeline; portanto, comece-o você mesmo quando estiver pronto.
O pipeline gera pontos de restauração automaticamente, cerca de uma vez por hora, e os mantém por 7 dias. Um pipeline que você acabou de criar não tem para onde retroceder até que produza o primeiro.
Restaurar um dataset também restaura tudo o que está a jusante dele no mesmo pipeline. A restauração abrange um pipeline. Ele não se coordena com outros pipelines ou com leitores externos das mesmas tabelas, portanto, gerencie-os separadamente.
Rewind a pipeline using the UI
A interface do usuário e o Genie são as principais formas de usar o retrocesso. A interface do usuário lista os pontos de retrocesso disponíveis e mostra quais datasets cada um afeta antes de você fazer o commit.
- Na página do seu pipeline, clique no botão
ao lado de Run pipeline e clique em Rewind pipeline .
- Selecione um ponto de rebobinamento ou use um atalho como Rewind to yesterday ou Rewind to the latest point . Clique em Next .
- Select which tables to include. Use the Graph view to select datasets in the pipeline graph, or the List view to select them from a table. Leave Reset all checkpoints selected (the default) to restore source offsets and operator state along with the table data, so the pipeline reprocesses from the rewind point. Clear it to restore the table data only, without reprocessing, for example when you want a table's contents restored but do not want to reprocess the affected data. This setting must be the same for a table and its upstreams, and it cannot be cleared for a flow that reads an external source such as Kafka or Auto Loader. Click Next .
- Revise o ponto de retrocesso, a configuração do ponto de verificação e os conjuntos de dados afetados e clique em Rewind .
Inicie o pipeline para reproduzir os dados.
Você pode retroceder repetidamente. Cada retrocesso substitui o anterior, permitindo que você se recupere de uma reprodução com falha retrocedendo para outro lugar.
After a rewind
Uma falha de repetição deixa o pipeline retrocedido, mas parado. Corrija o código ou os dados de origem e comece o pipeline para tentar novamente, ou retroceda para um ponto diferente. O pipeline não sofre reversão por conta própria, e os erros aparecem por meio dos diagnósticos padrão do pipeline e do log de eventos.
O replay só é bem-sucedido se a definição atual do pipeline for compatível com o estado restaurado; o rewind não flexibiliza as regras de compatibilidade do Structured Streaming. Para saber quais alterações são compatíveis, consulte Tipos de alterações em consultas do Structured Streaming. As visualizações materializadas seguem a semântica de lotes e toleram alterações de esquema mais amplas, mas ainda falham se uma dependência for incompatível.
Um retrocesso que falha no meio do processo pode deixar o pipeline parcialmente retrocedido. Você tem duas opções:
- Volte novamente para o mesmo ponto ou para um diferente, e o pipeline convergerá para esse ponto.
- Para forçar o pipeline a começar uma atualização normal apesar do retrocesso incompleto, defina
pipelines.allowUpdateAfterIncompleteRewindcomotruee reinicie o pipeline.
Até onde é possível retroceder
Os pontos de restauração são mantidos por 7 dias. Dentro dessa janela, uma restauração falha se os dados necessários já tiverem sido removidos. Verifique estes itens antes de depender da restauração:
VACUUMou umadelta.deletedFileRetentionDurationcurta sobre suas tabelas. Consulte Trabalhar com a história da tabela.- Retenção de origem menor do que a janela pela qual você deseja retroceder, como um tópico do Kafka que mantém um dia.
Pipelines com várias origens ou longas cadeias de dependência precisam de mais retenção, porque cada tabela e ponto de verificação precisa alcançar um ponto consistente.
Limitações
- Não é possível restaurar um pipeline para um ponto anterior a um refresh completo.
- Os pontos de retrocesso são mantidos por 7 dias, e um retrocesso falha se o histórico da tabela ou os dados de origem necessários para alcançar o ponto já tiverem sido removidos, por exemplo, por
VACUUMou retenção curta da origem. Consulte Até onde você pode retroceder. - O modo em tempo real não é compatível.
- O Kinesis, o Pulsar, o Google Pub/Sub e as fontes de dados personalizadas criadas com as APIs de fonte de dados do DSv2 ou do Python não são compatíveis como fontes.
- Sinks externos e sinks personalizados não são compatíveis, incluindo sinks definidos com
create_sink(). Consulte Usar sinks em pipelines. - As tabelas de transmissão que usam um filtro de linha ou uma máscara de coluna não podem ser retrocedidas. Consulte Aplicar manualmente filtros de linha e máscaras de coluna.
- Stateful rewind requires the RocksDB armazenamento do estado, which pipelines use by default. A rewind fails for a flow configured with a different armazenamento do estado.
- Algumas tabelas de transmissão AUTO CDC precisam de um refresh antes de poderem ser rebobinadas. O pipeline notifica você quando você solicita o retrocesso.
- Materialized views might fully recompute rather than incrementally refresh after a rewind. See Incremental refresh for materialized views.
- O recurso de retrocesso (rewind) abrange um único pipeline e não se coordena com leitores externos ou outros pipelines que leiam as mesmas tabelas.
- O recurso de restauração não restaura o código do pipeline, a configuração do pipeline ou os metadados de objetos do Unity Catalog, como tags e concessões.