Recomendações de otimização no Azure Databricks

Consultas lentas e altos custos de computação geralmente vêm de algumas causas raiz: ler mais dados do que uma consulta precisa, embaralhar dados entre nós, escolher um plano de consulta ruim ou reescrever arquivos que não mudaram. O Azure Databricks aborda muitas dessas causas automaticamente em cargas de trabalho que vão desde processamento ETL em grande escala até consultas interativas e ad hoc. Outras otimizações só se aplicam quando você as ativa ou ajusta para uma carga de trabalho específica.

Esta página começa com recomendações para a maioria das cargas de trabalho, depois agrupa as otimizações conforme se elas rodam automaticamente ou se exigem que você as configure, e descreve o problema que cada uma resolve. A maioria das otimizações de tempo de execução do Databricks requer o Delta Lake, o formato padrão para tabelas no Azure Databricks.

Comece com estas recomendações

Essas opções proporcionam os maiores ganhos de desempenho para a maioria das cargas de trabalho. Eles também ajudam muitas das otimizações automáticas desta página a funcionarem com máxima eficácia.

  • Use clusterização líquida para o layout das tabelas.Clusterização líquida substitui a partição de tabela e ZORDER. Ele organiza os dados pelas colunas onde você filtra com frequência, o que melhora o salto de dados e a remoção dinâmica de arquivos.
  • Use tabelas gerenciadas do Unity Catalog.A otimização preditiva mantém tabelas gerenciadas automaticamente. Consulte as tabelas gerenciadas do Unity Catalog para Delta Lake e Apache Iceberg.
  • Use a computação habilitada pelo Photon. A E/S preditiva requer Photon, assim como a poda dinâmica de arquivos nas instruções MERGE, UPDATE e DELETE. Confira O que é o Photon?.
  • Ative vetores de exclusão. A E/S Preditiva usa vetores de exclusão para evitar reescrever arquivos inteiros durante atualizações, exclusões e fusões, e a concorrência em nível de linha os exige. Para tabelas Delta Lake, você deve ativar explicitamente os vetores de exclusão. Consulte vetores de exclusão no Databricks.
  • Use o Databricks Runtime mais recente. Novas versões incluem as melhorias de desempenho mais recentes. Algumas otimizações exigem uma versão mínima do Databricks Runtime ou computação habilitada por Photon. Veja cada página para os requisitos.

Otimizações automáticas

Essas otimizações estão ativadas por padrão. Você não precisa habilitá-las, mas algumas oferecem mais benefícios quando suas tabelas e computação atendem a certas condições, como usar o Photon ou manter as estatísticas das tabelas atualizadas.

  • Cache de disco: Acelera consultas que leem repetidamente os mesmos arquivos de dados remotos do Parquet e do Delta Lake. O Azure Databricks armazena em cache cópias dos arquivos no armazenamento local dos nós de computação para que as leituras posteriores sejam executadas localmente. O Azure Databricks habilita isso automaticamente em tipos de instância worker que o suportam.
  • Poda dinâmica de arquivos: pula arquivos que não podem conter linhas correspondentes em joins em tabelas Delta Lake. As instruções MERGE, UPDATE e DELETE exigem processamento com Photon habilitado para a eliminação dinâmica de arquivos.
  • Low shuffle merge: Acelera MERGE operações que atualizam ou excluem algumas linhas em cada arquivo. Low shuffle merge processa linhas não modificadas sem embaralhamento e preserva o layout de dados existente delas.
  • Execução adaptativa de consultas: Reotimiza os planos de consulta enquanto as consultas são executadas, com base no tamanho real dos dados. Isso corrige estratégias lentas de join, tarefas pequenas demais em excesso e tarefas enviesadas que vêm de estimativas imprecisas.
  • E/S Preditiva: Acelera as varreduras de dados e reduz os dados reescritos durante atualizações, exclusões e mesclagens em computação habilitada por Photon.
  • Otimizador baseado em custo: Utiliza estatísticas de tabelas e colunas para escolher planos de consulta eficientes, especialmente para consultas com múltiplas junções. O otimizador baseado em custo depende de estatísticas, então colete-as e mantenha-as atualizadas.
  • Otimização preditiva: executa OPTIMIZE, VACUUM e ANALYZE automaticamente nas tabelas gerenciadas do Unity Catalog, para que você não precise agendar a manutenção das tabelas. Também mantém as estatísticas que o otimizador baseado em custos utiliza atualizadas. Para verificar se está ativado para sua conta, veja Verificar se a otimização preditiva está ativada.

Otimizações configuradas por você

Essas otimizações exigem que você as ative, as ajuste ou mude a configuração da tabela. Use-os quando uma carga de trabalho precisar de um comportamento que os padrões não cobrem.

  • Suporte ao arquivamento: Use quando políticas de ciclo de vida em nuvem movem arquivos de tabela antigos para camadas de armazenamento arquivativo para reduzir custos de armazenamento. O suporte a arquivamento orienta o Azure Databricks a ignorar arquivos com mais tempo que o período especificado, para que a política de ciclo de vida não quebre consultas que apenas leem dados recentes. Esse recurso está em Visualização Pública.
  • Junção por intervalo: Usar quando junções usam um ponto em um intervalo ou condição de sobreposição de intervalo. O SQL do Databricks otimiza as junções de intervalo automaticamente. Em outros ambientes de computação, ajuste as junções de intervalo com hints de junção ou configuração de sessão.
  • Níveis de isolamento e conflitos de escrita: Use quando gravações concorrentes na mesma tabela entram em conflito, ou quando uma carga de trabalho precisa de garantias mais rigorosas do que o nível padrão de isolamento WriteSerializable. O isolamento serializável reduz a taxa de transferência para gravações concorrentes. A concorrência em nível de linha resolve automaticamente muitos conflitos entre escritas concorrentes em tabelas que atendem aos seus requisitos.
  • Índices de busca em texto completo: Use quando consultas pesquisarem substrings ou palavras em colunas de texto com as funções search ou isearch. O índice pula arquivos que não podem conter linhas correspondentes. Esse recurso está em Beta.

Observação

Índices de filtro de Bloom são um recurso obsoleto de omissão de dados. Eles adicionam sobrecarga de gravação e são difíceis de ajustar. Se suas tabelas tiverem esses índices, veja os índices de filtro de Bloom (obsoletos) para substituí-los e removê-los.

Outros recursos de desempenho

Diagnostique cargas de trabalho lentas ou caras

Se a carga de trabalho for mais lenta ou mais cara do que o esperado e você não souber o motivo, use a interface do Spark para encontrar o gargalo antes de mudar a configuração. Veja como diagnosticar problemas de custo e desempenho usando a interface do Spark.