Pular para o conteúdo

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 ver

Uma tabela Delta de transações tem 400 mil arquivos de 2 MB. Qual é o efeito principal disso?

Confiança:

Vídeo · português · 26 min

Mostra particionamento aplicado a tabela no Databricks, que é exatamente a stack da sua sabatina. Observe o critério de escolha da coluna de partição, porque é aí que a banca aperta.

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

CategoriaO que cobraAlavanca típica
ArmazenamentoVolume guardado, por classe e por tempoRetenção, ciclo de vida, VACUUM de versões antigas
ComputaçãoCluster de pé e query executadaSizing, autoscaling, cluster de job, spot
TransferênciaDado saindo da região ou entre zonasManter processamento perto do dado
VarreduraBytes lidos por consulta em motor serverlessPartiçã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].

  1. 1OPTIMIZE compacta arquivos pequenos em arquivos maiores, reescrevendo os dados
  2. 2Auto compaction junta arquivos pequenos logo após a escrita, dentro da partição
  3. 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 skippingpular 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

Curto e direto sobre de onde vem o gasto no Databricks. Use para conseguir separar, em voz alta, o custo da plataforma do custo das máquinas na nuvem.

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 rever

Drill

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. 1.Uma tabela de extratos tem 300 mil arquivos de poucos megabytes; consultas simples levam minutos e o cluster fica ocioso.

  2. 2.A tabela foi particionada por id_transacao e o storage tem milhões de diretórios com um arquivo cada.

  3. 3.As consultas filtram sempre por id_cliente, a tabela já é particionada por data e mesmo assim varre quase tudo.

  4. 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. 5.Um job de backfill em lote, sem SLA, roda no fim de semana e custa caro em máquina sob demanda.

  6. 6.Trezentos usuários abrem o mesmo painel de fraude toda manhã e cada abertura dispara a mesma consulta.

  7. 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?
Responder no simulado

Para ir além