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.
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
- En el pull request:
validate, pruebas unitarias del código Python y despliegue a un destino de staging. - Tras el merge:
deploy -t prodcon un service principal autenticado por OIDC, sin tokens personales. - Plantillas internas con
bundle initpara 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.