Local y Databricks¶
El mismo pipeline.py corre en tu equipo y en un job de Databricks. Esta página explica
qué cambia por debajo.
Detección del runtime¶
flowchart LR
CF["config.json"] --> L["Launcher"]
L --> E{"¿Databricks?"}
E -->|no| LC["SparkSession local\ntablas schema.nombre\nrutas locales"]
E -->|sí| DC["Spark de Databricks\ntablas catalogo.schema.nombre\nrutas abfss, s3 o gs"]
LC & DC --> TW["TableWriter, TableReader\nIngestionEngine"]
Launcher se crea una sola vez al inicio del proceso. A partir de ahí los writers,
readers, ingestors y el SafeMigrator obtienen la sesión de Spark y la configuración con
Launcher.current(). Por eso sus constructores solo piden el contrato.
Qué cambia entre entornos¶
| Aspecto | Local | Databricks |
|---|---|---|
| Nombre de tabla | schema.nombre |
catalogo.schema.nombre |
| Catálogo | Se ignora | Se resuelve con {catalog.<capa>} |
| Rutas | Carpetas locales, por ejemplo /tmp/... |
Almacenamiento cloud |
| Máscaras de columna | Se omiten sin error | ALTER COLUMN ... SET MASK |
| Permisos | Se omiten sin error | GRANT y DENY |
| Lectura batch de Landing | LocalBatchReader |
AutoLoaderReader |
| Lectura streaming de Landing | FileStreamReader |
AutoLoaderReader |
| Kafka | KafkaReader |
KafkaReader |
Para escribir SQL que funcione en ambos entornos, usa contract.effective_name en lugar
de escribir el nombre de la tabla a mano.
Selección de readers¶
SourceReaderFactory aplica tres reglas, en este orden:
- Si
source.formateskafka, usaKafkaReader. - Si la ingesta es streaming, usa Auto Loader en Databricks y
FileStreamReaderen local. - Si es batch, usa Auto Loader en Databricks y
LocalBatchReaderen local.
Con Databricks Connect, desde tu equipo contra un cluster remoto, se usan los readers
locales para archivos y KafkaReader para Kafka.
Los readers específicos de Databricks se importan de forma diferida, así que el módulo se puede importar en local sin tener instaladas sus dependencias.