Databricks Workflows: orquestração de pipelines de dados end-to-end
João Barros
20 de October de 2025
2 min de leitura
Os Databricks Workflows (anteriormente Jobs) permitem orquestrar pipelines complexos com múltiplas tasks — notebooks, scripts Python, queries SQL, Delta Live Tables — com dependências, retry automático e notificações.
Anatomia de um Workflow
Job
├── Task: ingest_bronze (Notebook: 01_ingest)
├── Task: transform_silver (Notebook: 02_transform, depende de ingest_bronze)
├── Task: aggregate_gold (Notebook: 03_aggregate, depende de transform_silver)
└── Task: refresh_powerbi (Python script, depende de aggregate_gold)
Criar via API REST
POST /api/2.1/jobs/create
{
"name": "Pipeline_Vendas_Diario",
"tasks": [
{
"task_key": "ingest_bronze",
"notebook_task": {"notebook_path": "/Pipelines/01_ingest"},
"new_cluster": {"spark_version": "15.4.x-scala2.12", "num_workers": 4}
},
{
"task_key": "transform_silver",
"depends_on": [{"task_key": "ingest_bronze"}],
"notebook_task": {"notebook_path": "/Pipelines/02_transform"},
"existing_cluster_id": "{{cluster_id}}"
}
],
"schedule": {"quartz_cron_expression": "0 0 6 * * ?", "timezone_id": "Europe/Lisbon"},
"email_notifications": {"on_failure": ["dados@bconcepts.pt"]}
}
Parâmetros dinâmicos
# No notebook, ler parâmetros do job
dbutils.widgets.get("data_execucao")
# Passar parâmetros na task
"base_parameters": {"data_execucao": "{{job.start_time.iso_date}}"}
Retry e timeouts
"max_retries": 2,
"min_retry_interval_millis": 300000, // 5 minutos entre retries
"timeout_seconds": 3600 // falhar se demorar mais de 1h
Conclusão
Os Databricks Workflows eliminam a necessidade de ferramentas externas de orquestração para pipelines Spark. Para casos mais complexos de cross-plataforma, combine com Azure Data Factory chamando o Databricks REST API.