O que é Parquet?  – Parte 2

Técnicas de codificação e compressão em Parquet

O Parquet emprega uma variedade de técnicas de codificação e compactação para otimizar o armazenamento e melhorar o desempenho. Essas técnicas garantem que os dados sejam armazenados com eficiência, reduzindo o espaço necessário e mantendo os recursos de acesso rápido.

Técnicas de Codificação

  • Codificação de Dicionário: Adequada para colunas com um número limitado de valores distintos, essa técnica cria um dicionário de valores exclusivos e substitui os dados reais por índices de dicionário. Por exemplo, se uma coluna de “categoria” contiver valores como Eletrônicos e Cozinha, ela usará um dicionário para armazenar esses valores e índices para se referir a eles, reduzindo significativamente o tamanho do armazenamento.
  • Codificação de Comprimento de Execução (Run-Length Encoding – RLE): Eficaz para colunas com muitos valores repetidos, o RLE armazena o valor e a contagem de suas ocorrências consecutivas. Por exemplo, se a coluna “preço” tiver preços repetidos, o RLE armazenará o preço uma vez junto com a contagem de repetições, minimizando o armazenamento de dados repetitivos.
  • Empacotamento de Bits: Útil para colunas com valores inteiros pequenos, o empacotamento de bits minimiza o armazenamento usando o menor número de bits necessários para representar os valores, em vez dos 32 ou 64 bits padrão.

Técnicas de Compressão

O Parquet suporta uma variedade de algoritmos de compactação para reduzir ainda mais o tamanho dos dados. Algoritmos comuns de compactação sem perdas incluem Snappy, Gzip, Lzo e Lz4, que normalmente reduzem o tamanho dos dados para 40-60% de seu tamanho original.

Esses algoritmos envolvem o empacotamento de bytes compactados em blocos, que podem ser armazenados de forma contígua para economizar espaço e fornecer recursos de acesso aleatório rápido. Ao ler dados, o leitor só precisa descompactar os blocos necessários em vez de todo o arquivo, melhorando o desempenho de leitura.

Combinando Codificação e Compactação

Depois de aplicar as técnicas de codificação, o Parquet aplica algoritmos de compactação para reduzir ainda mais o tamanho dos dados. A escolha do algoritmo de compressão depende do trade-off entre a taxa de compressão e a velocidade de descompressão:

  • Snappy: Equilibra a velocidade e a taxa de compressão, tornando-o adequado para uso geral.
  • Gzip: Oferece taxas de compactação mais altas, mas velocidades de compactação e descompactação mais lentas, ideal para cenários em que a economia de espaço é mais crítica do que a velocidade.
  • Lzo and Lz4: Conhecido pela alta velocidade de descompactação, adequado para análises em tempo real, onde o acesso rápido aos dados é essencial.

Exemplos de eficiência do Parquet

Para ilustrar ainda mais a eficiência do Parquet em vários cenários de processamento de dados, vamos mergulhar em exemplos adicionais que mostram suas vantagens em aplicações do mundo real.

Exemplo 1: Análise de dados Financeiros

Considere uma empresa de serviços financeiros que processa milhões de transações diariamente. Cada registro de transação inclui vários campos, como ID da transação, carimbo de data/hora, número da conta, tipo de transação, valor e moeda.

  • Cenário: Os analistas precisam gerar relatórios diários resumindo os valores das transações por tipo e moeda.
  • Armazenamento Orientado a Linhas: um banco de dados orientado a linhas precisaria verificar todas as linhas para extrair as colunas relevantes (tipo de transação, valor e moeda), resultando em operações de E/S altas e desempenho de consulta lento.
  • Parquet: Com o Parquet, apenas as colunas necessárias são lidas, reduzindo significativamente as operações de E/S. Por exemplo, ler apenas as colunas ‘tipo de transação’, ‘valor’ e ‘moeda’ de um conjunto de dados com milhões de linhas reduz drasticamente o volume de dados processados, acelerando a geração de relatórios.

Exemplo 2: Armazenamento e Recuperação de Dados de Log

Um serviço da Web registra milhões de eventos diariamente, com cada entrada de log incluindo um carimbo de data/hora, ID de usuário, ID de sessão, tipo de evento e detalhes do evento.

  • Cenário: os engenheiros precisam analisar eventos de erro no mês passado para identificar padrões e solucionar problemas.
  • Armazenamento Orientado a Linhas: a recuperação de eventos de erro envolveria a verificação de todas as entradas de log, incluindo aquelas não relevantes para a consulta.
  • Parquet: ao armazenar logs no formato Parquet, apenas as colunas ‘tipo de evento’ e ‘detalhes do evento’ relevantes precisam ser lidas. Além disso, a compactação do Parquet pode reduzir o tamanho do armazenamento de tipos de eventos repetitivos, tornando a recuperação de dados mais rápida e eficiente.

Esses exemplos destacam como o formato de armazenamento colunar do Parquet e os mecanismos de compactação eficientes melhoram significativamente o desempenho do processamento de dados:

  • Operações de E/S reduzidas: Ao ler apenas as colunas necessárias, o Parquet minimiza a E/S do disco, que geralmente é o gargalo no processamento de dados.
  • Melhor desempenho de Consulta: o acesso a dados direcionados leva a uma execução de consulta mais rápida, permitindo análises em tempo real e insights mais rápidos.
  • Armazenamento Eficiente: os algoritmos de compactação reduzem o tamanho do armazenamento físico, diminuindo os custos e melhorando as velocidades de recuperação de dados.
  • Escalabilidade: O design do Parquet permite lidar com conjuntos de dados em grande escala com eficiência, tornando-o adequado para aplicativos de big data em vários domínios.

Publicado

em

por

Tags:

Comentários

Deixe um comentário

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