Lakeflow, lección 12 de 17

Errores, Checkpoints y recuperación en Lakeflow

Christian Herrera9 min de lectura orientativa

Objetivo: saber qué hacer cuando falla un pipeline, cuándo basta con reiniciarlo y por qué un Full Refresh puede provocar pérdida de datos.

1. ¿Qué guarda realmente un checkpoint?

Un checkpoint no es únicamente el último offset de Kafka. Puede almacenar tres tipos de información:

  • Progreso: hasta qué offset o versión se ha procesado.

  • Estado: información de agregaciones, joins y deduplicación.

  • Metadatos: información necesaria para recuperar la ejecución.

Lakeflow administra estos checkpoints internamente para cada flow de streaming. Databricks on AWS

Kafka · offsets 1–1000

Lakeflow Streaming Flow

Último lote confirmado: offset 800

Bronze

Datos confirmados

Checkpoint

Progreso y estado

Supongamos que el pipeline falla procesando los offsets 801–900.

Al reiniciarlo, Lakeflow puede recuperar el último estado confirmado y reintentar el lote fallido sin duplicar sus efectos en la tabla gestionada.

Esto es posible gracias a la combinación de checkpoints, recuperación de Spark y escrituras transaccionales. No significa que cualquier operación externa —por ejemplo, llamar a una API— tenga automáticamente garantías exactly-once. Databricks on AWS

2. Cuatro incidentes de producción

Caso A. Event Hubs deja de responder durante 2 minutos

Normalmente basta con reintentar cuando se recupera la conexión. Se continúa desde el checkpoint, siempre que los eventos sigan disponibles.

Caso B. Un ticket incumple expect_or_fail

Hay que corregir la regla, el dato o introducir una cuarentena. Reiniciar sin resolver la causa probablemente reproducirá el mismo error.

Caso C. Modificamos una agregación streaming con estado

Cambiar las claves de agrupación puede volver incompatible el checkpoint anterior. Un reintento normal no lo soluciona; necesitamos planificar cómo reconstruir el estado.

Caso D. Se elimina o corrompe el checkpoint

No debemos lanzar un Full Refresh automáticamente. Primero hay que comprobar si conservamos todo el histórico y evaluar las opciones de recuperación.

Databricks documenta distintas alternativas de recuperación, como Full Refresh, reconstrucción con backup/backfill y reset selectivo de checkpoints. Databricks on AWS

3. Full Refresh: ¿qué hace exactamente?

Comparemos las operaciones.

Operación

Datos existentes

Checkpoints

Refresh normal

Conservados y actualizados

Conservados

Full Refresh de Streaming Table

Se eliminan y reconstruyen

Se reinician

Reset de checkpoint

Se conservan

Se reinician

En una Materialized View, Full Refresh recalcula el resultado completo.

Un reset de checkpoint no es equivalente a un Full Refresh: conservar datos y volver a procesar eventos puede crear duplicados si la operación no es idempotente. Databricks on AWS

4. Experimento: el peligro de Kafka con retención corta

Imagina esta situación:

  • Event Hubs conserva los eventos durante 24 horas.

  • Bronze tiene 30 días de histórico.

  • Lanzas Full Refresh sobre Bronze.

¿Qué sucedería con el histórico?

Refresh normal

Full Refresh

Histórico Bronze después de ejecutar

1 día

DisponibleNo recuperable desde Kafka

Riesgo de pérdida de histórico

La tabla se vacía y se reconstruye con los mensajes que todavía existen en Kafka. Los 29 días anteriores no pueden recuperarse desde esa fuente.
Ejemplo conceptual que supone que los mensajes retenidos permiten reconstruir exactamente el último día.

Por eso, en una arquitectura con Kafka, Bronze debería diseñarse para no necesitar Full Refresh habitual. Es más seguro mantener el histórico raw en Delta y reconstruir Silver desde ese histórico cuando sea necesario. Databricks on AWS

5. Práctica: diagnosticar un pipeline fallido

Cuando falle un pipeline, sigue este procedimiento:

  1. Abre Jobs & Pipelines y selecciona la ejecución fallida.

  2. Consulta Issues, el DAG y el mensaje de error del flow afectado.

  3. Identifica si el problema es transitorio, de calidad, de código o del checkpoint.
  4. Corrige la causa y utiliza Validate cuando sea un cambio de código o configuración.

  5. Utiliza Refresh failed tables si corresponde. Reserva Full Refresh para los casos que realmente lo requieren.

Databricks permite reejecutar únicamente las tablas fallidas y sus dependientes, evitando reprocesar todo el pipeline. Databricks on AWS

Consultar errores con SQL

sql
SELECT
    timestamp,
    event_type,
    message,
    error
FROM event_log('<pipeline-id>')
WHERE level = 'ERROR'
ORDER BY timestamp DESC
LIMIT 20;

Esto te permite investigar el error con mayor detalle que el mensaje resumido de la interfaz.

6. Un concepto avanzado: Rewind

Databricks dispone también de Pipeline Rewind, actualmente una funcionalidad Beta con requisitos específicos.

Permite volver a un punto anterior y reprocesar datos preservando la coherencia entre tablas, offsets y estado, en los casos compatibles.

Pero no sirve para solucionar checkpoints corruptos o cambios incompatibles en operadores con estado. Databricks on AWS

Lo estudiaremos en profundidad más adelante; por ahora, quédate con que Rewind y Full Refresh son operaciones diferentes.

7. Mini ejercicio: incidente real

Tienes un pipeline Bronze que consume Event Hubs.

  • La retención de Event Hubs es de 24 horas.

  • Bronze conserva 6 meses de datos.

  • El pipeline falla por un problema temporal de conectividad.

  • Los checkpoints siguen intactos.

¿Qué harías primero?

¡Correcto!

Conservamos los datos y el checkpoint. Si los eventos pendientes siguen dentro de la retención de Event Hubs, el pipeline podrá continuar procesándolos normalmente.

Qué debes recordar:

  • Los checkpoints permiten recuperar una ejecución sin empezar desde cero.

  • Los errores transitorios normalmente requieren reintentos, no Full Refresh.

  • Los cambios incompatibles de estado necesitan una recuperación planificada.

  • Nunca reconstruyas Bronze desde Kafka sin verificar primero la retención y la posibilidad de recuperar el histórico.

Próxima lección: desplegaremos Lakeflow como código utilizando Databricks Asset Bundles y Unity Catalog, pasando el mismo pipeline por DEV, UAT y PROD.

Una idea más en tu cuaderno.

Marca esta lección cuando hayas terminado de repasarla.

Material importado del curso original. Simulaciones conservadas como ejemplos estáticos; para sus controles interactivos, consulta el original.