Ciência e Dados
Menu
  • Home
  • Sobre
  • Contato
Menu
Liquid Clustering no Databricks

Casos de Uso e Otimização de Liquid Clustering no Databricks

Posted on 25 de março de 2025 by David Matos

Este artigo é uma continuação sobre Liquid Clustering. Se estiver chegando agora leia a Parte 1 aqui.

O Liquid Clustering foi projetado para melhorar uma ampla gama de cenários de processamento de dados, mas ele se destaca especialmente nos seguintes casos de uso abaixo.

Colunas de alta cardinalidade muito filtradas: Tabelas onde as consultas frequentemente filtram por colunas com altíssimo número de valores distintos (por exemplo, IDs, timestamps precisos) geralmente não se beneficiam de particionamento clássico, mas ganham desempenho com Liquid Clustering. Como ele pode clusterizar por essas colunas sem explodir o número de arquivos, consultas que filtram pequenos intervalos de valores (ex.: um ID específico, um intervalo de tempo) irão ler consideravelmente menos dados do que antes.

Dados com distribuição desigual (skew): Quando alguns valores de uma coluna concentram uma parcela enorme dos dados (skew), as técnicas tradicionais sofrem – partições podem ficar desbalanceadas e Z-order não lida bem se um valor domina. O Liquid Clustering, por ser incremental e autoajustável, resiste melhor a skew, distribuindo dados em arquivos de forma mais uniforme. Isso beneficia tabelas onde, por exemplo, um país específico contém 90% dos registros, evitando que consultas em outros países ainda assim tenham que atravessar arquivos enormes dessa parte dominante.

Tabelas em rápido crescimento (alta taxa de ingestão): Se os dados chegam em alta velocidade ou em grandes lotes, exigindo constantes manutenções de layout, o Liquid Clustering reduz esse esforço. Ele foi pensado para escalabilidade, lidando com acréscimos contínuos de dados com menos intervenção manual. Tabelas que antes precisariam de repartition ou Z-order diário para não degradar, com Liquid Clustering podem operar por mais tempo de forma eficiente apenas com otimizações incrementais. Isso se traduz em menos janelas de manutenção e mais disponibilidade dos dados para uso imediato.

Workloads com gravações concorrentes: Cenários onde múltiplos jobs ETL ou streams escrevem simultaneamente na tabela se beneficiam da capacidade de escrita concorrente proporcionada pelo Liquid Clustering. Por exemplo, imagine uma aplicação IoT onde diferentes fontes enviam dados para a mesma tabela Delta – antigamente seria necessário particionar talvez por dispositivo ou por fonte para evitar conflitos; agora pode-se clusterizar por uma coluna de query (ex.: timestamp) enquanto vários escritores inserem juntos sem problemas. Isso simplifica a arquitetura de ingestão para data lakes unificados.

Padrões de acesso mutáveis ao longo do tempo: Data Warehouses e Lakes corporativos frequentemente veem suas workloads de consulta mudarem conforme evoluem as perguntas de negócio. Um dia as análises focam por região, no outro por categoria de produto. O Liquid Clustering brilha nesses casos pois acompanha mudanças de padrão sem exigir reconstrução da tabela. Você pode ajustar as colunas de cluster conforme as novas necessidades (ou usar o modo automático), permitindo que mesmo uma tabela muito antiga possa ser “reotimizada” para novas queries sem migrações. Isso prolonga a vida útil das tabelas e adia ou elimina projetos de re-particionamento caros.

Quando o particionamento tradicional seria ineficaz: Há situações em que nenhuma chave de partição única parece adequada – ou resultaria em partições demais ou de menos. Por exemplo, uma tabela onde um campo de data diária geraria partições pequenas demais, enquanto sem partição os arquivos ficam gigantes. O Liquid Clustering cobre esse “meio termo” melhor, pois consegue organizar os dados internamente por data (ou outra coluna) sem criar pastas separadas para cada valor. Assim, evita tanto o problema de “muitas partições” quanto o de “poucas partições”, entregando um layout balanceado de forma automática.

Otimização do Liquid Clustering

Para otimizar o uso do Liquid Clustering em diferentes cargas de trabalho, podemos considerar algumas recomendações práticas de acordo com o tipo de workload. Vejamos algumas.

Ingestão Contínua (Streaming): Para fluxos de dados em tempo real entrando na tabela, habilite o clustering já no processo de ingestão (usando a API de writeStream.clusterBy). Desse modo, cada micro-lote já grava dados aproximadamente ordenados. Combine isso com auto-compaction ou jobs de OPTIMIZE frequentes para mesclar micro-lotes passados. O resultado será uma tabela continuamente atualizada e bem organizada, pronta para consultas quase em tempo real. Atenção apenas ao checkpointing do stream e à latência adicionada pelo clustering-on-write – em geral, é um impacto pequeno diante do benefício em consultas subsequentes.

Consultas Analíticas Pesadas: Se a principal característica for ler grandes volumes de dados (por exemplo, queries de BI varrendo meses ou anos de histórico), considere fazer um OPTIMIZE FULL inicial após ativar o Liquid Clustering (especialmente se a tabela já tinha muito dado não clusterizado). Isso vai garantir que mesmo os dados antigos fiquem alinhados ao novo critério de cluster, aproveitando o máximo de data skipping. Depois, adapte a frequência de otimização incremental conforme a cadência de novos dados. Para workloads muito intensos de leitura, vale também monitorar estatísticas de skipping (via DESCRIBE EXTENDED ou logs de execução) para ver se as colunas de clustering escolhidas estão de fato evitando I/O de leitura como esperado. Se não estiverem, reavalie as colunas ou a ordem delas.

Cargas de Atualização/Merge frequente: Em casos de uso onde há muitas atualizações, upserts ou merges (como tabelas que acumulam eventos ou dimensões que sofrem mudanças), o Liquid Clustering continua válido, mas lembre-se de que atualizações podem introduzir fragmentação – por exemplo, linhas atualizadas podem ser marcadas como removidas e adicionadas novamente em outra região de arquivo (deletion vectors). A recomendação é similar: executar otimizações periódicas para recolocar esses dados no lugar certo e limpar arquivos removidos fantasma. A vantagem é que, mesmo com muitas atualizações, você não precisa reorganizar toda a tabela manualmente; concentre-se apenas em rodar as compactações e confiar que o mecanismo de clustering manterá a ordem lógica. Além disso, a concorrência aprimorada ajuda nos merges: múltiplos merges em diferentes partes da tabela terão menos conflitos do que teriam se todos estivessem limitados a mesma partição física.

Workloads com diversidade de consultas: Se o seu Lake atende a diferentes times com diferentes padrões de query (por exemplo, times de Ciência de Dados explorando colunas diversas), tirar proveito do clustering automático pode ser interessante. Embora ainda em fase de amadurecimento, essa funcionalidade deixará que o Databricks detecte novas colunas que valha a pena clusterizar ao identificar tendências nas workloads. Enquanto isso, manualmente você pode monitorar o uso: ferramentas de análise de queries (como os query history do Databricks ou logs do Spark) podem revelar quais filtros são mais frequentes. Esteja preparado para eventualmente alterar as chaves de cluster para sintonizar com as consultas predominantes de cada período. Essa adaptabilidade é algo que o Liquid Clustering torna possível com mínimo esforço.

David Matos

Referências:

Formação Apache Spark e Databricks 4.0

Use liquid clustering for Delta tables

Comparativo Técnico de Plataformas de Dados – Databricks, Microsoft Fabric e Snowflake

Compartilhar

  • Clique para compartilhar no X(abre em nova janela) 18+
  • Clique para compartilhar no Facebook(abre em nova janela) Facebook
  • Clique para compartilhar no LinkedIn(abre em nova janela) LinkedIn
  • Clique para compartilhar no WhatsApp(abre em nova janela) WhatsApp
  • Clique para compartilhar no Telegram(abre em nova janela) Telegram
  • Clique para compartilhar no Tumblr(abre em nova janela) Tumblr
  • Clique para compartilhar no Pinterest(abre em nova janela) Pinterest

Relacionado

1 thought on “Casos de Uso e Otimização de Liquid Clustering no Databricks”

  1. Pingback: Liquid Clustering no Databricks — Ciência e Dados

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Buscar

Tags Mais Comuns nos Posts

Agentes de IA Analytics Análise de Negócios Apache Spark AWS Big Data Blockchain Business Intelligence ChatGPT Cientista de Dados Cientistas de Dados Ciência de Dados Cloud Computing Data Lake Data Mesh Data Science Data Scientist Data Warehouse Deep Learning Deploy Engenharia de Dados Estatística GPU GraphRAG Hadoop IA Generativa Inteligência Artificial Internet of Things Linguagem Python Linguagem R LLM LLMs Machine Learning MCP (Model Context Protocol) Metadados Normalização NVIDIA Oracle Pipeline de Dados Predictive Analytics Probabilidade PySpark Python RAG Storytelling

Histórico de Posts

  • maio 2025 (6)
  • abril 2025 (2)
  • março 2025 (4)
  • fevereiro 2025 (8)
  • janeiro 2025 (5)
  • dezembro 2024 (4)
  • novembro 2024 (1)
  • outubro 2024 (1)
  • setembro 2024 (1)
  • agosto 2024 (1)
  • julho 2024 (3)
  • junho 2024 (1)
  • maio 2024 (1)
  • abril 2024 (2)
  • março 2024 (1)
  • fevereiro 2024 (1)
  • janeiro 2024 (1)
  • dezembro 2023 (1)
  • outubro 2023 (2)
  • setembro 2023 (1)
  • agosto 2023 (4)
  • julho 2023 (2)
  • junho 2023 (4)
  • maio 2023 (2)
  • abril 2023 (2)
  • março 2023 (3)
  • fevereiro 2023 (3)
  • janeiro 2023 (3)
  • dezembro 2022 (7)
  • novembro 2022 (6)
  • outubro 2022 (2)
  • setembro 2022 (3)
  • agosto 2022 (2)
  • julho 2022 (2)
  • junho 2022 (3)
  • maio 2022 (1)
  • abril 2022 (3)
  • março 2022 (1)
  • fevereiro 2022 (3)
  • janeiro 2022 (2)
  • dezembro 2021 (1)
  • novembro 2021 (5)
  • outubro 2021 (2)
  • setembro 2021 (3)
  • agosto 2021 (1)
  • junho 2021 (1)
  • fevereiro 2021 (2)
  • janeiro 2021 (1)
  • dezembro 2020 (1)
  • novembro 2020 (1)
  • outubro 2020 (2)
  • agosto 2020 (1)
  • abril 2020 (1)
  • março 2020 (1)
  • fevereiro 2020 (2)
  • agosto 2019 (1)
  • abril 2019 (1)
  • setembro 2018 (2)
  • julho 2018 (1)
  • junho 2018 (3)
  • abril 2018 (1)
  • março 2018 (1)
  • fevereiro 2018 (2)
  • janeiro 2018 (1)
  • dezembro 2017 (1)
  • novembro 2017 (1)
  • outubro 2017 (1)
  • setembro 2017 (1)
  • julho 2017 (1)
  • junho 2017 (1)
  • maio 2017 (2)
  • abril 2017 (1)
  • janeiro 2017 (1)
  • novembro 2016 (1)
  • outubro 2016 (1)
  • setembro 2016 (1)
  • julho 2016 (1)
  • junho 2016 (1)
  • maio 2016 (1)
  • abril 2016 (1)
  • fevereiro 2016 (1)
  • janeiro 2016 (3)
  • dezembro 2015 (4)
  • novembro 2015 (6)
  • outubro 2015 (9)
  • setembro 2015 (9)
  • agosto 2015 (9)
©2025 Ciência e Dados