Tá acabando!

Compre agora com desconto
Corra enquanto há tempo!

dias

:

horas

:

minutos

:

segundos

Arquivos Parquet

Danielle Oliveira
Danielle Oliveira

Compartilhe

Fundo branco. Na parte esquerda temos o símbolo do Apache Parquet que contém seis faixas azuis claro na diagonal e algumas delas estão divididas em duas. Ao lado delas temos a palavra Parquet na cor azul claro.

O Apache Parquet é um formato de arquivo de código aberto, disponível para qualquer projeto no ecossistema Hadoop. Construído do zero, ele foi desenvolvido com o armazenamento de dados baseado em colunas com o objetivo de suportar esquemas de compressão e codificação de grandes quantidades de dados, fornecendo uma maior eficiência comparado com arquivos baseados em linhas, como o CSV.

O Parquet tem uma organização interna dos dados bem semelhante a uma tabela do RDBMS (Relational Database Management System, ou Sistema de Gerenciamento de Banco de Dados Relacional, em português), com linhas e colunas. Ao contrário dessa tabela, os dados no Parquet são armazenados um ao lado do outro. Devido a sua estrutura colunar, ele fornece uma melhor compactação e desempenho ao se trabalhar com grandes quantidades de dados.

Neste artigo vamos conhecer um pouco sobre a estrutura de um arquivo Parquet, um comparativo simples entre arquivos CSV e Parquet e algumas vantagens de se utilizar este formato.

O que é Apache Parquet ?

O Apache Parquet é um arquivo de formato binário que permite o armazenamento dos dados utilizando alguns tipos específicos, como: o BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE e BYTE_ARRAY. Os metadados no Parquet, incluindo esquema e estrutura, são integrados individualmente em cada arquivo tornando o Apache Parquet um formato de arquivo autodescritivo.

Os metadados de um arquivo Parquet contém informações como versão, schema, tipo, entre outros pontos importantes e são gravados sempre após os dados. Segundo a documentação do Apache Parquet, esse formato é projetado explicitamente para separar os metadados dos dados. Quando isso acontece, é possível referenciar vários arquivos Parquet. Assim, teremos os dados em vários arquivos onde eles podem ser lidos paralelamente, ou seja, ao mesmo tempo.

Os metadados são segmentados em três partes: metadados de arquivo (FileMetaData), metadados de coluna (ColumnMetaData) e metadados de cabeçalho de página (PageHeader). No caso dos metadados de arquivos, eles são armazenados no rodapé de cada arquivo e contém as seguintes informações:

  • Versão do formato Parquet.
  • Esquema de dados.
  • Metadados da coluna (tipo, número de valores, localização, codificação).
  • Número de grupos de linhas.
  • Pares de valor-chave adicionais.

Espera-se que a leitura de um arquivo Parquet, seja inicialmente feita pelos metadados. Assim, será possível localizar e identificar apenas as colunas que são de interesse para o leitor.

Apache Parquet vs CSV

O formato CSV é um dos mais utilizados atualmente e a sua estrutura é bem semelhante a uma tabela do RDBMS com colunas e linhas. A primeira linha do arquivo forma o cabeçalho e a separação interna pode ser feita por vírgula (,) ponto e vírgula(;) ou TAB (caractere vazio).

Ferramentas como Google Sheets e Excel podem ser utilizadas para criar um arquivo CSV. Porém, mesmo sendo um dos formatos mais utilizados para a criação de arquivos, existem algumas desvantagens ao se trabalhar com ele. Um exemplo dessa situação pode acontecer ao utilizar serviços que cobram, com base nos dados consultados, quantidade de dados armazenados e o tempo, como o Amazon Athena, Amazon S3 e o Google Dataproc.

O Databricks, realizou um comparativo de performance e economia de espaço com um mesmo conjunto de dados utilizando os formatos Parquet e CSV.

ArquivoEspaço utilizadoTempo de execução
CSV1 TB236 segundos
Apache Parquet130 GB6,78 segundos

A partir dessa comparação, foi possível verificar uma economia com recursos de armazenamento de 87% e uma redução significativa no tempo de execução de consultas quando utilizamos o formato Parquet.

Vantagens

  • As consultas podem ser realizadas diretamente em colunas específicas, em vez de realizar uma busca em todos os dados dos arquivos. Isso ocorre pelo fato de os arquivos Parquet serem autodescritivos. Através do arquivo de metadados é possível identificar apenas as colunas que têm relevância para a consulta.

  • A compactação é feita coluna por coluna e pode ser realizada utilizando um dos vários codecs disponíveis. Foi idealizada para oferecer suporte a opções flexíveis de compactação e esquemas de codificação extensíveis por tipo de dado, ou seja, uma codificação diferente pode ser aplicada para compactar colunas como dados de tipos distintos.

  • Ao utilizar o formato colunar como o Parquet, é possível evoluir o schema. Inicialmente pode-se criar um arquivo com poucas colunas e gradualmente ir adicionando mais colunas ao schema, podendo ter vários arquivos com schemas diferentes e compatíveis entre si.

  • Com os tipos de dados mapeados, é possível identificar facilmente com quais dados estamos trabalhando, se texto, números ou outro. Porém, por ser de formato binário, não é possível ler os dados de um arquivo Parquet sem utilizar uma ferramenta externa, como no caso do CSV.

Conclusão

Neste artigo conhecemos um pouco sobre o projeto Apache Parquet, que é um formato de arquivo de código aberto e orientado por colunas.

O formato de armazenamento colunar torna o Parquet bastante eficiente quando se trata de armazenar e analisar grandes volumes de dados. Isso porque, ao executar uma consulta, podemos nos concentrar apenas nas informações relevantes minimizando bastante a quantidade de dados que precisam ser processados.

Outra característica interessante deste formato é a possibilidade de utilizarmos esquemas de compressão específicos para cada coluna. Este recurso aumenta de forma significativa a eficiência e a economia com recursos de armazenamento.

Para saber mais, acompanhe as novidades na página do projeto Apache Parquet e em nossos cursos aqui da Alura.

Danielle Oliveira
Danielle Oliveira

Danielle é formada em Sistemas de Informação. Faz parte do Scuba Team e atua nas áreas de Banco de dados, Business Intelligence e NoSQL. É apaixonada por livros, música e tecnologia.

Veja outros artigos sobre Data Science