As análises sobre o Hadoop liam registros linha por linha, então uma consulta que precisa de um salário ainda puxava o registro inteiro de cada funcionário, e registros heterogêneos comprimiam mal. Os próprios conjuntos de dados do Twitter eram aninhados em sete níveis, com mais de 80 nós folha.

O Twitter e a Cloudera criaram o Parquet, um formato de armazenamento colunar de código aberto para o Hadoop. Em vez de linhas, ele grava colunas: todos os nomes, depois todas as idades, depois todos os salários. Seu grande feito foi fatiar dados aninhados em colunas usando o algoritmo de fragmentação de registros Dremel, do Google, e uma especificação de codificação compartilhada.

Como uma coluna contém um único tipo, tanto a compressão genérica quanto a específica por tipo melhoram, e um motor de consulta pula o carregamento das colunas de que não precisa. A codificação automática por dicionário, somada ao bit-packing e à codificação run-length, reduz o restante. O Parquet não prende os usuários a nenhuma biblioteca de serialização, por isso muitos motores o adotam.

O Parquet 1.0 foi lançado em julho de 2013 por colaboradores do Twitter, Cloudera, Criteo, Berkeley AMPLab e Stripe, e já estava em produção no Twitter.

Armazenar por coluna para que as análises pulem o que não precisam

Valores homogêneos em uma coluna comprimem muito melhor do que linhas mistas, então os arquivos ficam bem menores.

As consultas carregam apenas as colunas de que precisam, então a E/S e o custo caem acentuadamente.

Fatiar dados aninhados via Dremel significa que um esquema complexo ainda cabe em colunas.

Ser independente de framework permitiu que todo motor o adotasse sem reescrever.

Quando o gargalo é ler e comprimir, mude o layout físico, não a lógica: armazenar valores homogêneos juntos faz a E/S cara encolher e o arquivo ficar menor de graça.

O Parquet 1.0 foi lançado em julho de 2013 e rapidamente se tornou o formato colunar padrão em todo o ecossistema Hadoop e Spark, depois dentro de data lakes, lakehouses e data warehouses na nuvem. Hoje é um dos formatos de armazenamento aberto com suporte mais amplo, usado onde quer que as análises precisem de varreduras rápidas e baratas de tabelas largas.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. Announcing Parquet 1.0: Columnar Storage for Hadoop Twitter Blog · web.archive.org ·
  2. Parquet Format Specification Apache Parquet · apache.googlesource.com