Saltar a contenido

Configuración

Cada proyecto tiene un config.json con la parte de infraestructura: en qué entorno corre, qué catálogos y rutas usa y cómo se registran los logs. Normalmente vive en config/config.json y queda fuera de git.

Ejemplo completo

{
  "EXECUTION_ENVIRONMENT": "local",
  "SPARK_APP_NAME":        "MiPipeline",
  "SPARK_WAREHOUSE_DIR":   "/tmp/mi-pipeline/warehouse",
  "DELTA_VERSION":         "3.2.0",

  "LOG_LEVEL":     "INFO",
  "LOG_DIR":       "/tmp/logs",
  "LOG_ROTATION":  "10 MB",
  "LOG_RETENTION": "7 days",

  "environments": {
    "local": {
      "env":       "local",
      "env_short": "l",
      "catalogs": {
        "bronze": "bronze",
        "silver": "silver",
        "gold":   "gold"
      },
      "paths": {
        "landing":    "/tmp/mi-pipeline/landing",
        "bronze":     "/tmp/mi-pipeline/bronze",
        "silver":     "/tmp/mi-pipeline/silver",
        "gold":       "/tmp/mi-pipeline/gold",
        "checkpoint": "/tmp/mi-pipeline/checkpoints",
        "ops":        "/tmp/mi-pipeline/ops"
      }
    }
  }
}

Claves principales

Clave Para qué sirve
EXECUTION_ENVIRONMENT Indica si el proceso corre en local o en Databricks
SPARK_APP_NAME Nombre de la aplicación Spark
SPARK_WAREHOUSE_DIR Warehouse de Spark cuando se trabaja en local
DELTA_VERSION Versión de los JAR de Delta que se descargan en local
LOG_* Nivel, carpeta, rotación y retención del log de aplicación
environments Un bloque por entorno con sus catálogos y rutas

La configuración del logging se explica con detalle en Logger de aplicación.

Placeholders

Los valores del bloque environments se inyectan en los contratos JSON al cargarlos. Así un mismo contrato sirve para desarrollo y producción.

Placeholder Se resuelve con
{catalog.<capa>} environments.<target>.catalogs.<capa>
{path.<nombre>} environments.<target>.paths.<nombre>
{env} environments.<target>.env
{env_short} environments.<target>.env_short

Por ejemplo, "path": "{path.landing}/ventas" se convierte en /tmp/mi-pipeline/landing/ventas con la configuración anterior.

Un placeholder sin definir detiene la carga

Si un contrato usa {path.raw} y el entorno activo no declara paths.raw, el loader lanza KeyError. Es intencional: prefiere fallar al cargar el contrato antes que escribir en una ruta equivocada.

Local frente a Databricks

En local los catálogos se ignoran y las tablas se crean como schema.nombre en el warehouse de Spark. En Databricks con Unity Catalog se crean como catalogo.schema.nombre, usando el catálogo que resuelva el placeholder. Encontrarás más detalle en Local y Databricks.