Além da ementa · tema 29 de 30
Custo e performance
35 min · 2 vídeos · 14 cards · 1 drill
Por que cai
Engenheiro júnior faz o pipeline rodar; sênior faz rodar barato e explica a conta. Em banco, com volume alto e plataforma paga por uso, a banca usa este tema para ver se você raciocina com número ou com palpite.
Pré-teste · 1 de 2
responda antes de verUma tabela Delta de transações tem 400 mil arquivos de 2 MB. Qual é o efeito principal disso?
Vídeo · português · 26 min
Em uma frase
Custo em plataforma de dados é, quase sempre, bytes desnecessários movidos e máquina ligada sem trabalho útil — e as duas coisas se medem antes de se consertar.
De onde vem a fatura
| Categoria | O que cobra | Alavanca típica |
|---|---|---|
| Armazenamento | Volume guardado, por classe e por tempo | Retenção, ciclo de vida, VACUUM de versões antigas |
| Computação | Cluster de pé e query executada | Sizing, autoscaling, cluster de job, spot |
| Transferência | Dado saindo da região ou entre zonas | Manter processamento perto do dado |
| Varredura | Bytes lidos por consulta em motor serverless | Partição, formato colunar, data skipping |
Em lake bancário, varredura e computação dominam. Armazenamento costuma ser o menor dos quatro — o que engana muita gente que começa apagando dado antigo e economiza pouco.
O problema dos arquivos pequenos
Cada arquivo vira pelo menos uma tarefa e uma chamada ao object storage. Com 400 mil arquivos de 2 MB, o motor gasta mais tempo listando, planejando e abrindo arquivo do que lendo bytes. A CPU fica ociosa, o job demora e você paga por máquina parada.
A mira é centenas de megabytes por arquivo, na casa de 128 MB a 1 GB. O
Databricks faz autotuning do targetFileSize conforme o tamanho da tabela
[verificar o valor padrão vigente na sua runtime].
- 1OPTIMIZE compacta arquivos pequenos em arquivos maiores, reescrevendo os dados
- 2Auto compaction junta arquivos pequenos logo após a escrita, dentro da partição
- 3Optimized writes ajusta o tamanho já na hora de gravar, evitando o problema na origem
Particionamento como alavanca de custo
Partição vira diretório no storage. Se a consulta filtra pela coluna de partição, o motor elimina diretórios inteiros sem abrir nada — é a economia mais barata que existe. No Athena, onde a cobrança é por dado varrido, isso aparece direto na fatura.
Critério de escolha: baixa cardinalidade, presente nos filtros frequentes, e que produza partições grandes o bastante. Data de transação é o padrão em banco. CPF, id_transacao e timestamp cheio são erro clássico.
Z-ORDER e data skipping
O formato de tabela guarda mín, máx e contagem por arquivo. Se o filtro não cabe na faixa do arquivo, o motor não abre — isso é data skipping— pular arquivos com base nas estatísticas gravadas. O truque é que isso só funciona quando os valores estão agrupados: se cada arquivo tem clientes de 1 a 10 milhões, nenhum arquivo é pulável.
ZORDER BY reorganiza fisicamente os dados para colocar valores próximos das colunas
escolhidas nos mesmos arquivos, apertando as estatísticas. Use para colunas de
cardinalidade alta que aparecem nos filtros — id_cliente, número do cartão
tokenizado. Partição e Z-ORDER são complementares, não alternativas.
Cluster, autoscaling e spot
Cluster de job sobe, executa e morre: você paga o que usou. Cluster interativo cobra enquanto está de pé, inclusive ocioso — é a linha silenciosa da fatura. Autoscaling resolve carga variável dentro da execução, mas não conserta job mal escrito: escalar um shuffle ruim distribui o desperdício por mais máquinas.
Spot cabe em workers de carga em lote tolerante a reexecução, com checkpoint, fora de janela crítica. Não cabe no driver, porque perder o driver mata o job, nem em pipeline com SLA regulatório.
Cache de resultado ataca outro eixo: consulta idêntica repetida por muitos usuários no mesmo painel não precisa reprocessar.
FinOps de dados
Acrescente orçamento com alerta antes do estouro, revisão periódica das tabelas e jobs mais caros, e uma métrica de custo por produto de dado. Custo vira responsabilidade quando tem nome.
A regra de ouro
Medir antes de otimizar. A Spark UI mostra número de tarefas, duração, shuffle e desbalanceamento. O plano de execução mostra se a partição está sendo aproveitada. O relatório de custo mostra qual serviço subiu. Chegar na sabatina dizendo como você confirmaria a hipótese vale mais do que acertar a hipótese de primeira.
Como responder isso em voz alta
Divida em quatro categorias de custo, diga qual delas domina em lake, e só então proponha a alavanca. Sempre acompanhe a proposta de como você mediria o antes e o depois — é isso que separa quem otimiza de quem repete receita.
Se quiser outro ângulo
Como cai na sabatina
“A fatura do lake dobrou em um mês. Como você investiga?”
Erros comuns
- Otimizar antes de medir. Sem Spark UI, plano de execução ou relatório de custo, você está adivinhando qual das quatro alavancas mexer.
- Achar que o problema é sempre o cluster. Na maioria dos casos de lake, o gargalo é layout de arquivo e volume varrido, não falta de CPU.
- Particionar por coluna de alta cardinalidade, como CPF ou id_transacao. Gera milhares de diretórios com arquivos minúsculos e piora tudo.
- Confundir particionamento com Z-ORDER. Partição elimina diretórios inteiros na leitura; Z-ORDER organiza dentro dos arquivos para o data skipping funcionar.
- Usar spot para tudo. Interrupção no driver mata o job; em janela crítica com SLA regulatório, a economia não paga o risco.
- Rodar cluster interativo para carga agendada. Cluster de job sobe, executa e morre; cluster interativo ocioso cobra por estar de pé.
- Guardar tudo para sempre na classe padrão de armazenamento. Sem política de ciclo de vida e sem VACUUM, você paga por versões que ninguém vai ler.
Flashcards
Card 1 de 14
0 certos · 0 a reverDrill
Sintoma, alavanca
Cada linha é um sintoma real. Escolha a alavanca principal antes de abrir a resposta e diga em voz alta como você confirmaria a hipótese.
1.Uma tabela de extratos tem 300 mil arquivos de poucos megabytes; consultas simples levam minutos e o cluster fica ocioso.
2.A tabela foi particionada por id_transacao e o storage tem milhões de diretórios com um arquivo cada.
3.As consultas filtram sempre por id_cliente, a tabela já é particionada por data e mesmo assim varre quase tudo.
4.O job de reprocessamento noturno de 6 anos de histórico roda com 4 workers e leva 9 horas, com todos os executores saturados.
5.Um job de backfill em lote, sem SLA, roda no fim de semana e custa caro em máquina sob demanda.
6.Trezentos usuários abrem o mesmo painel de fraude toda manhã e cada abertura dispara a mesma consulta.
7.A fatura dobrou no mês e o time já decidiu que a causa foi o novo pipeline de PIX.
Quiz · 1 de 2
Qual é a diferença correta entre particionamento e Z-ORDER numa tabela Delta?
Explique para um gerente
Explique para o gestor de tecnologia, em um minuto, por que juntar arquivos pequenos numa tabela pode reduzir a fatura sem trocar nada de infraestrutura.
Responda em voz alta antes de seguir. Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.
Perguntas de sabatina deste tema
- · A fatura do lake dobrou em um mês. Como você investiga?
- · Um analista reclama que a consulta de extrato por cliente no Athena está lenta e cara. A tabela é Parquet, particionada por data. O que você faz?
- · Seu time quer usar instâncias spot em todos os clusters para cortar custo. Você concorda?
Para ir além