Reiniciar e executar novamente um pipeline

Importante

Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.

Uma transformação incorreta, um lote malformado de registros de origem ou uma alteração inesperada no esquema podem deixar incorretas as tabelas do pipeline a partir de um determinado momento conhecido. Rewind retorne o pipeline a um ponto anterior ao problema para que você possa implantar uma correção e reprocessar apenas os dados afetados.

Rewind restaura em conjunto as versões da tabela, os offsets da origem de streaming e o estado dos operadores, para que o reprocessamento não pule registros nem grave registros duplicados. Três operações reprocessam dados e resolvem diferentes problemas:

  • Rewind serve para um pipeline recuperável que gravou dados incorretos a partir de um ponto conhecido no tempo, como após uma transformação incorreta, uma entrada malformada ou uma implantação de código com falha. Ele restaura os dados da tabela, os deslocamentos de origem e o estado do operador para um ponto anterior ao problema e reprocessa apenas os dados afetados, mantendo o estado do operador. Os dados anteriores a esse ponto permanecem intocados.
  • A atualização completa reconstrói uma tabela a partir de todos os dados de origem disponíveis e descarta seu conteúdo atual. Use para recalcular tudo do zero, ou quando uma alteração de código não for compatível com o estado existente.
  • A redefinição do checkpoint recupera um pipeline cujo checkpoint é inválido ou está corrompido, ou bloqueado por uma alteração de código incompatível com o checkpoint. Ele reinicia o checkpoint e continua em frente preservando o conteúdo atual da tabela. O Rewind não pode recuperar esses casos, pois não relaxa as regras de compatibilidade do Structured Streaming.

Requisitos

Requirement Detalhes
Channel O pipeline deve estar no canal Versão prévia. Consulte Configurar pipelines.
Configuration Defina a pipelines.rewind.betaEnabled configuração do pipeline para true, e execute o pipeline uma vez. Cada fluxo só pode ser retrocedido após concluir uma atualização com o recurso de viagem no tempo ativado.
Modo pipeline Pipelines acionados e contínuos. O modo em tempo real não é suportado.
Fontes Tabelas Delta, tabelas de streaming, Kafka e Auto Loader.
Targets Tabelas de streaming e visões materializadas.
Flows Fluxos de streaming e fluxos de captura de dados de mudança AUTOMÁTICA (CDC), incluindo alvos SCD Tipo 1 e SCD Tipo 2. Consultas com estado, como agregações, junções e deduplicação, são suportadas.

Todo fluxo no oleoduto deve atender a esses requisitos. Enquanto pipelines.rewind.betaEnabled é true, um pipeline contendo um fluxo que não se qualifica falha em suas atualizações. Confirme que todo fluxo atende aos requisitos acima antes de habilitá-lo.

Note

Um pipeline que tem pipelines.rewind.betaEnabled definido como true não pode voltar para o canal Current até que o canal Current seja atualizado para um runtime que ofereça suporte a retrocesso.

Como funcionam o retrocesso e a reprodução novamente

Retroceder e reproduzir novamente são etapas separadas.

Rewind restaura cada tabela para a versão que mantinha em um ponto de reversão e redefine os checkpoints de streaming que rastreiam até onde cada fluxo foi lido. Suas transformações não são executadas, e nenhum dado de origem é reprocessado.

Reexecução acontece na próxima vez que o pipeline é executado. Ele reprocessa a partir do ponto de retrocesso usando a definição atual do pipeline, avança até o momento atual e então retoma o processamento incremental normal. O Rewind não inicia o pipeline, então inicie-o você mesmo quando estiver pronto.

O pipeline gera pontos de retrocesso automaticamente, cerca de uma vez por hora, e os mantém por 7 dias. Um pipeline que você acabou de criar não terá nenhum ponto para o qual retroceder até que produza o primeiro.

Retroceder um conjunto de dados também retrocede tudo o que vem depois dele no mesmo pipeline. Rewind cobre um duto. Ele não se coordena com outros pipelines nem com leitores externos das mesmas tabelas, portanto gerencie-os separadamente.

Reiniciar um pipeline pela interface do usuário

A interface e o Gênio são as principais formas de usar o rewind. A interface do usuário lista os pontos de reversão disponíveis e mostra quais conjuntos de dados cada um afeta antes de confirmar.

  1. Na página do pipeline, clique no botão ícone de seta para baixo ao lado de Run pipeline e, em seguida, clique em Rewind pipeline.
  2. Selecione um ponto de retrocesso ou use um atalho, como Retroceder para ontem ou Retroceder para o ponto mais recente. Clique em Próximo.
  3. Selecione quais tabelas incluir. Use a visualização Graph para selecionar conjuntos de dados no grafo do pipeline, ou a visualização List para selecioná-los em uma tabela. Deixe Redefinir todos os checkpoints selecionado (o padrão) para restaurar os offsets da origem e o estado do operador, juntamente com os dados da tabela, para que o pipeline reprocesse os dados a partir do ponto de retrocesso. Limpe para restaurar apenas os dados da tabela, sem reprocessamento, por exemplo, quando você quer restaurar o conteúdo da tabela, mas não quer reprocessar os dados afetados. Essa configuração deve ser a mesma para uma tabela e seus upstreams, e não pode ser liberada para um fluxo que leia uma fonte externa como Kafka ou Auto Loader. Clique em Próximo.
  4. Revise o ponto de retrocesso, a configuração do checkpoint e os conjuntos de dados afetados, então clique em Rewind.

Inicie o pipeline para reproduzir os dados novamente.

Você pode voltar várias vezes. Cada retrocesso substitui o último, então você pode se recuperar de uma reprodução que falhou voltando em outro ponto.

Após um retrocesso

Uma falha na repetição deixa o pipeline rebobinado, mas parado. Corrija o código ou os dados de origem e inicie o pipeline para tentar novamente, ou volte para outro ponto. O pipeline não reverte automaticamente, e os erros são exibidos por meio dos diagnósticos padrão do pipeline e do log de eventos.

A reprodução só tem sucesso se a definição atual do pipeline for compatível com o estado restaurado; o rewind não relaxa as regras de compatibilidade do Structured Streaming. Para quais mudanças são compatíveis, veja Tipos de alterações em consultas de Streaming Estruturado. Visões materializadas seguem semântica em lote e toleram mudanças mais amplas de esquema, 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:

  1. Retroceda novamente até o mesmo ponto ou até outro ponto, e o pipeline convergirá para esse ponto.
  2. Para forçar o pipeline a iniciar uma atualização normal apesar do rewind incompleto, defina pipelines.allowUpdateAfterIncompleteRewind como true e reinicie o pipeline.

Até onde você pode retroceder

Os pontos de retrocesso são mantidos por 7 dias. Dentro dessa janela, uma reversão falha se os dados de que ela precisa já tiverem sido removidos. Verifique isto antes de confiar no retrocesso:

  • VACUUM ou um delta.deletedFileRetentionDuration curto em suas tabelas. Consulte Trabalhar com o histórico de tabelas.
  • Retenção na origem menor do que a janela pela qual você deseja retroceder, como um tópico do Kafka que mantém os dados por um dia.

Pipelines com várias fontes ou longas cadeias de dependências precisam de maior retenção, porque cada tabela e cada checkpoint precisam retroceder até um ponto consistente no tempo.

Limitações

  • Rewind não pode restaurar um pipeline para um ponto anterior a uma atualização completa.
  • Os pontos de reversão são mantidos por 7 dias, e a reversão falha se o histórico da tabela ou os dados de origem necessários para atingir esse ponto já tiverem sido removidos, por exemplo, por VACUUM ou por um curto período de retenção dos dados de origem. Veja até onde você pode rebobinar.
  • O modo em tempo real não é suportado.
  • Kinesis, Pulsar, Google Pub/Sub e fontes personalizadas construídas com as APIs de fontes de dados DSv2 ou Python não são suportadas como fontes.
  • Pias externas e pias personalizadas não são suportadas, inclusive pias definidas com create_sink(). Consulte Usar coletores em pipelines.
  • Tabelas de streaming que usam filtro de linha ou máscara de coluna não podem ser retrocedidas. Consulte Aplicar manualmente filtros de linha e máscaras de coluna.
  • O retrocesso com estado requer o armazenamento de estados do RocksDB, que os pipelines usam por padrão. Um retrocesso falha para um fluxo configurado com um armazenamento de estados diferente.
  • Algumas tabelas de streaming AUTO CDC precisam de uma atualização antes de poderem ser retrocedidas. O pipeline notifica você quando solicita o retrocesso.
  • Visualizações materializadas podem ser totalmente recomputadas em vez de serem atualizadas de forma incremental após uma reversão. Confira Atualização incremental para exibições materializadas.
  • Rewind abrange apenas um pipeline e não se coordena com leitores externos nem com outros pipelines que leem as mesmas tabelas.
  • O Rewind não restaura código do pipeline, configuração do pipeline ou metadados de objetos do Unity Catalog, como tags e concessões.

Recursos adicionais