Solução de problemas.
Comece com o ID de execução e depois percorra as tabelas de controle. Evite depurar apenas a partir da saída do notebook; a evidência durável está em Delta.
Primeiras consultas
SELECT *
FROM ops.ctrl_ingestion_runs
WHERE run_id = '<run_id>';
SELECT stack_trace
FROM ops.ctrl_ingestion_errors
WHERE run_id = '<run_id>'
ORDER BY error_ts_utc DESC;
Falhas comuns
Credenciais ou rede indisponíveis
Verifique o âmbito secreto, o tipo de runtime, a localização externa, a política de rede e se o conector requer acesso do lado do condutor ou do lado do Spark.
O conector retornou HTTP 401 ou 403
Trate isso como determinístico. Verifique a credencial do provedor, a função, a permissão do site, o escopo da API, a política de rede do Snowflake ou a concessão de armazenamento de objetos. ContractForge não tenta novamente a maioria das respostas 4xx porque a nova tentativa não pode corrigir a autorização.
O conector retornou HTTP 429, 5xx ou tempo limite
Eles podem ser transitórios para conectores de driver Python. Revise source.limits.retry_attempts, source.limits.retry_backoff_seconds e source.limits.timeout_seconds e verifique os limites de taxa do provedor e a estabilidade da rede.
O conector de download de driver excedeu os limites
Inspecione source_limits_json e source_metrics_json. Se a origem exceder regularmente max_bytes, max_files ou max_records, coloque o feed no armazenamento de objetos e ingira-o com conectores de arquivo ou carregador automático.
A política de esquema bloqueou a execução
Inspecione ctrl_ingestion_schema_changes e decida se a alteração é esperada. Não afrouxe cegamente a política de esquema.
Falha na qualidade
Verifique ctrl_ingestion_quality e ctrl_ingestion_quarantine. As regras somente para abortar não podem ser colocadas em quarentena.
Marca d’água não avançou
As execuções ignoradas e com falha não atualizam o estado. Lotes vazios preservam o estado anterior.
Serverless não pode acessar o armazenamento
Use locais externos do catálogo do Unity ou política de rede do espaço de trabalho. A configuração direta de credenciais geralmente é um padrão de cluster clássico.
Campos de solução de problemas do conector
Os metadados do conector são persistidos com segredos editados. Comece com estas colunas antes de alterar um contrato:
SELECT
run_id,
source_connector,
source_type,
source_format,
source_path,
source_options_json,
source_read_json,
source_auth_json,
source_limits_json,
source_metrics_json,
error_message
FROM ops.ctrl_ingestion_runs
WHERE run_id = '<run_id>';
Use source_metrics_json para distinguir o comportamento do conector do comportamento de gravação do Spark. Campos como runtime_strategy, read_strategy, bytes_read, records_read, files_read, pages_read e materialization_strategy estão presentes apenas quando o conector pode calculá-los sem uma varredura extra cara.
Lista de verificação do operador
- Identifique
run_idestatusfinal. - Leia o breve
error_messageemctrl_ingestion_runs. - Abra o rastreamento de pilha redigido completo em
ctrl_ingestion_errors. - Verifique os metadados de origem e o tipo de runtime.
- Verifique as tabelas de controle de qualidade e esquema.
- Só então execute novamente, repare ou altere o contrato.