Como Reduzir Custos no Databricks: Guia Completo de Otimização
O Problema: Custos de Cloud Fora de Controle
Segundo pesquisa da Unravel Data, empresas podem economizar entre 35% e 45% em custos de Databricks apenas com otimizações básicas de recursos. O problema é que muitas organizações não sabem por onde começar. Este guia apresenta estratégias práticas, validadas em projetos reais, para reduzir significativamente a fatura mensal do Databricks.
A plataforma Databricks cobra por DBUs (Databricks Units), uma unidade de processamento que varia conforme o tipo de cluster e workload. O custo final é calculado multiplicando o número de DBUs consumidos pelo preço por DBU do plano contratado. Entender essa mecânica é o primeiro passo para otimização.
1. Escolha o Tipo de Compute Correto
Um dos erros mais comuns é usar All-Purpose Clusters para tudo. Esses clusters são 2 a 4 vezes mais caros que Job Clusters. A documentação oficial do Databricks recomenda usar Job Compute para workloads não-interativos, pois o custo por DBU é significativamente menor.
| Tipo de Compute | Caso de Uso | Custo Relativo |
|---|---|---|
| All-Purpose Compute | Desenvolvimento interativo, notebooks | Alto (2-4x) |
| Jobs Compute | ETL batch, pipelines agendados | Baixo (1x) |
| SQL Warehouse | Queries SQL, BI tools | Médio |
| Serverless | Workloads variáveis, baixa latência | Pay-per-use |
Dica Prática:
Migre todos os jobs ETL agendados de All-Purpose para Jobs Compute. Essa única mudança pode reduzir custos em 50% ou mais para esses workloads específicos.
2. Spot Instances: Economia de até 90%
Instâncias Spot são capacidade excedente dos provedores de cloud (AWS, Azure, GCP) oferecida com descontos de até 90% em relação ao preço On-Demand. O trade-off é que essas instâncias podem ser interrompidas a qualquer momento.
A estratégia recomendada pelo Databricks é configurar o Driver Node como On-Demand (para manter o Spark Context estável) e os Worker Nodes como Spot. Se a cloud reclamar as instâncias Spot, o Driver solicita novos executores sem falhar o job.
// Cluster Policy para forçar uso de Spot Instances
{
"aws_attributes.availability": {
"type": "fixed",
"value": "SPOT_WITH_FALLBACK"
},
"aws_attributes.first_on_demand": {
"type": "fixed",
"value": 1
},
"aws_attributes.spot_bid_price_percent": {
"type": "fixed",
"value": 100
}
}
3. Auto-Scaling e Auto-Termination
Clusters ociosos são dinheiro queimado. O Databricks oferece duas funcionalidades essenciais para evitar desperdício:
Auto-Scaling
Permite que o cluster ajuste automaticamente o número de workers com base na demanda. Configure um mínimo e máximo de workers, e o Databricks escala conforme necessário.
# Configuração de Auto-Scaling via API
{
"autoscale": {
"min_workers": 2,
"max_workers": 10
}
}
Auto-Termination
Define um tempo de inatividade após o qual o cluster é automaticamente desligado. A recomendação é configurar entre 10 e 30 minutos para clusters interativos.
Caso Real:
Uma empresa de e-commerce reduziu custos em 35% apenas implementando auto-termination de 20 minutos em todos os clusters de desenvolvimento, eliminando clusters que ficavam ligados durante a noite e finais de semana.
4. Otimização de Delta Lake
O formato Delta Lake é fundamental para performance no Databricks. Tabelas mal otimizadas geram mais I/O, mais tempo de processamento e, consequentemente, mais custos.
OPTIMIZE e Z-ORDER
O comando OPTIMIZE compacta pequenos arquivos em arquivos maiores (idealmente ~1GB), resolvendo o "small files problem". O ZORDER reorganiza os dados fisicamente para maximizar o Data Skipping.
-- Compactar arquivos e ordenar por colunas frequentemente filtradas
OPTIMIZE sales_table
ZORDER BY (region, product_category);
-- Remover arquivos antigos (economiza storage)
VACUUM sales_table RETAIN 168 HOURS; -- 7 dias
Liquid Clustering (Novo)
O Databricks introduziu o Liquid Clustering como evolução do Z-ORDER. Ele reorganiza dados automaticamente durante operações de escrita, eliminando a necessidade de rodar OPTIMIZE manualmente.
5. Photon Engine: Quando Usar
O Photon é o motor de execução vetorizado do Databricks, escrito em C++. Ele acelera queries SQL e operações DataFrame em até 3x, mas custa mais por DBU. A decisão de usar Photon deve ser baseada em análise de custo-benefício.
| Cenário | Recomendação |
|---|---|
| Queries SQL complexas com JOINs grandes | Use Photon |
| Agregações pesadas em tabelas grandes | Use Photon |
| UDFs Python complexas | Evite Photon |
| Streaming simples com pouca transformação | Evite Photon |
6. Monitoramento e Governança
Sem visibilidade, não há otimização. O Databricks oferece ferramentas nativas para monitorar custos:
System Tables
A tabela system.billing.usage permite consultar o consumo de DBUs por workspace, cluster e usuário. Use-a para identificar os maiores consumidores.
-- Top 10 clusters por consumo de DBU no último mês
SELECT
cluster_name,
SUM(usage_quantity) as total_dbus,
SUM(usage_quantity * list_price) as estimated_cost
FROM system.billing.usage
WHERE usage_date >= DATE_SUB(CURRENT_DATE(), 30)
GROUP BY cluster_name
ORDER BY total_dbus DESC
LIMIT 10;
Cluster Policies
Cluster Policies permitem definir regras que limitam o que os usuários podem criar. São essenciais para governança de custos em equipes grandes.
7. Checklist de Otimização
Use esta lista para auditar o ambiente Databricks e identificar oportunidades de economia:
[ ] Jobs ETL usando Jobs Compute (não All-Purpose)
[ ] Spot Instances habilitadas para workers
[ ] Auto-termination configurado (10-30 min)
[ ] Auto-scaling com limites definidos
[ ] Delta Lake com OPTIMIZE/ZORDER agendado
[ ] VACUUM rodando semanalmente
[ ] Cluster Policies implementadas
[ ] Tags de custo configuradas
[ ] Alertas de budget ativos
[ ] Revisão mensal de custos agendada
Conclusão
A otimização de custos no Databricks não é um projeto único, mas um processo contínuo. Comece pelas mudanças de maior impacto (Jobs Compute, Spot Instances, Auto-termination) e evolua para otimizações mais avançadas (Delta Lake, Photon, Cluster Policies).
Com as estratégias apresentadas neste guia, é possível reduzir a fatura do Databricks em 30% a 50% sem comprometer performance. O segredo está em medir, analisar e ajustar continuamente.
Precisa de ajuda especializada?
A DataFusionX oferece diagnósticos gratuitos de custos Databricks. Entre em contato para uma análise personalizada do ambiente e identificação de oportunidades de economia.
./SUBSCRIBE_UPDATES
// Receba dicas de FinOps, cases de otimização e novidades sobre engenharia de dados.