Alejandría

Busca en Alejandría

Herramientas

Databricks Bundles

Versiona y despliega proyectos de datos en Databricks.

01

En pocas palabras

Declarative Automation Bundles, antes Databricks Asset Bundles, definen proyectos de datos e IA con código y YAML, incluidos jobs y pipelines, desplegables con Databricks CLI.

Qué problema resuelve

Configuración manual, diferencias entre ambientes y cambios difíciles de reproducir.

Cuándo utilizarlo

Procesos de datos y aprendizaje automático en producción. Ejemplo: versionar un pipeline en Git y desplegarlo en desarrollo, pruebas y producción.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

Cómo funciona

Un bundle describe recursos y código del proyecto. Los destinos permiten ajustar nombres, permisos y parámetros por ambiente. La CLI valida la definición, despliega los recursos y puede iniciar ejecuciones.

Ejemplo: promover un proyecto

Desde un proyecto que ya contiene databricks.yml, un destino dev y un recurso job llamado carga_diaria:

databricks bundle validate -t dev
databricks bundle deploy -t dev
databricks bundle run -t dev carga_diaria

La autenticación de la CLI y el cómputo del job deben estar configurados. En CI, utiliza una identidad de servicio con los permisos necesarios.

Estructura de un proyecto

cartera/
├── databricks.yml          # definición del bundle y destinos
├── resources/
│   ├── jobs.yml            # jobs y su programación
│   └── pipelines.yml       # pipelines declarativos
├── src/
│   ├── cargar.py
│   └── transformaciones/
└── tests/

Ejemplo de databricks.yml

bundle:
  name: cartera

include:
  - resources/*.yml

variables:
  catalogo:
    default: dev_finanzas

targets:
  dev:
    mode: development
    default: true
    workspace:
      host: https://adb-123.azuredatabricks.net
  prod:
    mode: production
    workspace:
      host: https://adb-456.azuredatabricks.net
    variables:
      catalogo: finanzas
    run_as:
      service_principal_name: 'sp-cartera-prod'
# resources/jobs.yml
resources:
  jobs:
    carga_diaria:
      name: carga-diaria
      schedule:
        quartz_cron_expression: '0 0 2 * * ?'
        timezone_id: UTC
      tasks:
        - task_key: cargar
          spark_python_task:
            python_file: ../src/cargar.py
            parameters: ['--catalogo', '${var.catalogo}']

Modos de destino

Modo Comportamiento
development Prefija los recursos con el nombre del usuario, pausa las programaciones; cada persona tiene su copia
production Valida que se despliega desde una identidad de servicio y sin prefijos; protege contra despliegues personales

Comandos del ciclo completo

databricks bundle init                 # crear desde una plantilla
databricks bundle validate -t prod     # comprobar sintaxis y referencias
databricks bundle deploy -t prod       # crear o actualizar recursos
databricks bundle run -t prod carga_diaria
databricks bundle destroy -t dev       # eliminar el entorno personal

Pipeline de CI/CD

  1. En el pull request: validate, pruebas unitarias del código Python y despliegue a un destino de staging.
  2. Tras el merge: deploy -t prod con un service principal autenticado por OIDC, sin tokens personales.
  3. Plantillas internas con bundle init para que todos los proyectos sigan la misma estructura.

Los pipelines declarativos (Delta Live Tables) también se definen como recursos del bundle.

Criterios de implementación

Mantén código y definición de recursos en el mismo cambio. Separa los destinos y evita que una configuración de desarrollo reutilice recursos de producción. Complementa los bundles con el aprovisionamiento de nube que requiera la plataforma.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.