Este tópico descreve como usar o coletor de dados incorretos em jobs de ingestão de dados do Flink CDC.
Visão geral
Na sincronização de dados em tempo real, a análise de dados de uma origem pode falhar devido a problemas como formatos incorretos, erros de codificação ou incompatibilidade de schema. Esse tipo de dado não processável é conhecido como dado incorreto.
A partir da versão 11,5 do VVR, a ingestão de dados oferece suporte à coleta de dados incorretos para a fonte de dados Kafka. As opções de configuração do conector permitem configurar o job para ignorar erros, registrar detalhes e continuar a execução.
Quando o conector encontra dados impossíveis de analisar, o sistema captura automaticamente os dados brutos e as informações de exceção e os grava em um coletor especificado. Isso permite:
Tolerar uma pequena quantidade de dados incorretos para evitar a interrupção de todo o pipeline.
Registrar o contexto completo para solução de problemas e análises posteriores.
Definir um limiar para evitar um número excessivo de erros.
Casos de uso típicos
|
Caso de uso |
Objetivo |
|
Pipelines de coleta de logs (Para fontes de dados não estruturados, como logs de aplicativos) |
A qualidade dos dados é inconsistente. Ignore alguns registros defeituosos para garantir que o processo principal continue em execução. |
|
Sincronização de tabelas de negócios principais (Para sistemas críticos, como pedidos ou alterações de conta) |
Exige alta consistência. Os erros acionam alertas imediatos para intervenção manual. |
|
Fase de exploração e análise de dados |
Processe todo o conjunto de dados rapidamente para entender sua estrutura geral antes de resolver problemas de dados incorretos. |
Limitações e considerações
Antes de usar este recurso, compreenda suas limitações e riscos potenciais:
Conectores suportados: atualmente, este recurso está disponível apenas para a fonte de dados Kafka. O suporte a outras fontes será adicionado em versões futuras.
Tipos de coletor suportados: no momento, apenas o tipo
loggertem suporte. Ele grava dados incorretos em um arquivo de log.
Este recurso é adequado para depuração e estágios iniciais de produção. Se grandes volumes de dados incorretos persistirem, recomendamos implementar medidas de governança de dados no sistema upstream.
Sintaxe
Ative o coletor de dados incorretos
O coletor de dados incorretos é definido no módulo pipeline. A sintaxe é a seguinte:
pipeline:
dirty-data.collector:
name: Logger Dirty Data Collector
type: logger
|
Parâmetro |
Descrição |
|
|
Nome do coletor. Recomendamos usar um nome significativo, como |
|
|
Tipo do coletor. Valores válidos:
|
Se você não definir esta opção, o sistema não registrará dados incorretos, mesmo que a tolerância a erros esteja ativada.
Configure a tolerância a erros na fonte de dados
Configurar apenas o coletor de dados incorretos não faz com que o sistema ignore erros de análise. Use este recurso em conjunto com a política de tolerância a erros do Kafka. Para obter detalhes, consulte a documentação do conector Kafka. O exemplo a seguir mostra uma configuração típica:
source:
type: kafka
# Skip the first 100 parsing errors; if the count exceeds 100, the job fails.
ingestion.ignore-errors: true
ingestion.error-tolerance.max-count: 100
|
Parâmetro |
Padrão |
Descrição |
|
|
|
Especifica se os erros de análise devem ser ignorados. Se definido como |
|
|
|
Número máximo de registros de dados incorretos tolerados. Quando |
Coletor de dados incorretos do tipo logger
O coletor de dados incorretos do tipo logger armazena dados incorretos em um arquivo de log separado. Para visualizar os logs de dados incorretos, siga estas etapas:
Acesse a página O&M e clique em Job Logs.
Clique em Running Logs, selecione a subaba Running Task Managers e selecione o nó TaskManager do operador relevante.
Clique em Log List e clique em
yaml-dirty-data.outna lista para visualizar ou salve os registros de dados incorretos.
Cada registro de dado incorreto inclui os seguintes metadados:
Timestamp de processamento do dado incorreto
Operador e índice da subtarefa que emitiram o registro
Conteúdo dos dados brutos
Informações da exceção que causou a falha no processamento
Formato do registro de dados incorretos
Cada registro contém os seguintes metadados:
text[2025-04-05 10:23:45] [Operator: SourceKafka -> Subtask: 2]
Raw Data: {"id": "abc", "ts": "invalid-timestamp"}
Exception: java.time.format.DateTimeParseException: Text 'invalid-timestamp' could not be parsed at index 0
---
|
Campo |
Descrição |
|
Timestamp |
Hora em que o dado incorreto foi capturado. |
|
Operador e subtarefa |
Operador específico e índice da subtarefa paralela onde ocorreu o erro. |
|
Dados brutos |
Dados brutos não analisados (no formato Base64 ou string). |
|
Exceção |
Tipo de exceção e resumo do stack trace da falha de análise. |
Perguntas frequentes
Dados incorretos afetam checkpoints?
Não. O sistema intercepta os dados incorretos antes da atualização de estado, portanto, eles não causam falhas nos checkpoints.
Coleta de dados incorretos vs. side output
Coletor de dados incorretos: lida com dados impossíveis de desserializar ou analisar.
Side output: lida com dados analisáveis que não atendem aos requisitos da lógica de negócios.