Provavelmente, a melhor alternativa para armazenamento CSV: Dados Parquet
Publicados: 2021-11-25O Apache Parquet oferece vários benefícios para armazenamento e recuperação de dados quando comparado a métodos tradicionais como CSV.
O formato Parquet é projetado para processamento de dados mais rápido de tipos complexos. Neste artigo, falamos sobre como o formato Parquet é adequado para as necessidades de dados cada vez maiores de hoje.
Antes de nos aprofundarmos nos detalhes do formato Parquet, vamos entender o que são dados CSV e os desafios que eles representam para o armazenamento de dados.
O que é armazenamento CSV?
Todos nós já ouvimos muito sobre CSV ( C omma S eparated V alues) - uma das formas mais comuns de organizar e formatar dados. O armazenamento de dados CSV é baseado em linha. Os arquivos CSV são armazenados com a extensão .csv. Podemos armazenar e abrir dados CSV usando Excel, Planilhas Google ou qualquer editor de texto. Os dados ficam prontamente visíveis assim que o arquivo é aberto.
Bem, isso não é bom - definitivamente não para um formato de banco de dados.
Além disso, conforme o volume de dados aumenta, torna-se difícil consultar, gerenciar e recuperar.
Aqui está um exemplo de dados armazenados em um arquivo .CSV:
EmpId,First name,Last name, Division 2012011,Sam,Butcher,IT 2013031,Mike,Johnson,Human Resource 2010052,Bill,Matthew,Architect 2010079,Jose,Brian,IT 2012120,Adam,James,SolutionsSe visualizarmos no Excel, podemos ver uma estrutura linha-coluna como abaixo:

Desafios com armazenamento CSV
Armazenamentos baseados em linha como CSV são adequados para operações C reate, U pdate e D elete.
E quanto ao R ead em CRUD, então?
Imagine um milhão de linhas no arquivo .csv acima. Levaria um tempo razoável para abrir o arquivo e pesquisar os dados que você está procurando. Não é tão legal. A maioria dos provedores de nuvem, como a AWS, cobra das empresas com base na quantidade de dados verificados ou armazenados - novamente, os arquivos CSV consomem muito espaço.
O armazenamento CSV não tem uma opção exclusiva para armazenar metadados, tornando a verificação de dados uma tarefa tediosa.
Então, qual é a solução econômica e ideal para realizar todas as operações CRUD? Deixe-nos explorar.
O que é armazenamento de dados Parquet?
Parquet é um formato de armazenamento de código aberto para armazenar dados. É amplamente utilizado em ecossistemas Hadoop e Spark. Os arquivos Parquet são armazenados como extensão .parquet.
Parquet é um formato altamente estruturado. Ele também pode ser usado para otimizar dados brutos complexos presentes em massa em data lakes. Isso pode reduzir significativamente o tempo de consulta.
O Parquet torna o armazenamento de dados eficiente e a recuperação mais rápida por causa de uma combinação de formatos de armazenamento baseados em linha e em colunas (híbridos). Nesse formato, os dados são particionados horizontalmente e verticalmente. O formato Parquet também elimina em grande parte a sobrecarga de análise.
O formato restringe o número geral de operações de E / S e, em última análise, o custo.
Parquet também armazena os metadados, que armazenam informações sobre dados como esquema de dados, número de valores, localização de colunas, valor mínimo, número de valor máximo de grupos de linhas, tipo de codificação, etc. Os metadados são armazenados em níveis diferentes no arquivo , tornando o acesso aos dados mais rápido.
No acesso baseado em linha, como o CSV, a recuperação de dados leva tempo, pois a consulta precisa navegar por cada linha e obter os valores de coluna específicos. Com o armazenamento Parquet, todas as colunas necessárias podem ser acessadas de uma vez.
Resumindo,
- Parquet é baseado na estrutura colunar para armazenamento de dados
- É um formato de dados otimizado para armazenar dados complexos em massa em sistemas de armazenamento
- O formato Parquet inclui vários métodos para compressão e codificação de dados
- Reduz significativamente o tempo de varredura de dados e tempo de consulta e ocupa menos espaço em disco em comparação com outros formatos de armazenamento como CSV
- Minimiza o número de operações IO, reduzindo o custo de armazenamento e execução de consultas
- Inclui metadados que tornam mais fácil encontrar dados
- Fornece suporte de código aberto
Formato de dados Parquet
Antes de entrar em um exemplo, vamos entender como os dados são armazenados no formato Parquet com mais detalhes:

Podemos ter várias partições horizontais conhecidas como grupos de linhas em um arquivo. Dentro de cada grupo de linhas, o particionamento vertical é aplicado. As colunas são divididas em vários blocos de coluna. Os dados são armazenados como páginas dentro dos blocos da coluna. Cada página contém os valores de dados codificados e metadados. Como mencionamos antes, os metadados de todo o arquivo também são armazenados no rodapé do arquivo no nível do grupo de Linhas.

Como os dados são divididos em blocos de coluna, adicionar novos dados codificando os novos valores em um novo bloco e arquivo também é fácil. Os metadados são então atualizados para os arquivos e grupos de linhas afetados. Assim, podemos dizer que Parquet é um formato flexível.
Parquet suporta nativamente a compressão de dados usando técnicas de compressão de página e codificação de dicionário. Vejamos um exemplo simples de compressão de dicionário:

Observe que no exemplo acima, vemos a divisão de TI 4 vezes. Assim, ao armazenar no dicionário, o formato codifica os dados com outro valor fácil de armazenar (0,1,2 ...) junto com o número de vezes que é repetido continuamente - IT, IT é alterado para 0,2 para salvar mais espaço. Consultar dados compactados leva menos tempo.
Comparação frente a frente
Agora que temos uma boa ideia de como são os formatos CSV e Parquet, é hora de algumas estatísticas para comparar os dois formatos:
| CSV | Parquet |
| Formato de armazenamento baseado em linha. | Um híbrido de formatos de armazenamento baseados em linha e em coluna. |
| Ele consome muito espaço porque nenhuma opção de compactação padrão está disponível. Por exemplo, um arquivo de 1 TB ocupará o mesmo espaço quando armazenado no Amazon S3 ou qualquer outra nuvem. | Compacta os dados durante o armazenamento, consumindo menos espaço. Um arquivo de 1 TB armazenado no formato Parquet ocupará apenas 130 GB de espaço. |
| O tempo de execução da consulta é lento devido à pesquisa baseada em linha. Para cada coluna, cada linha de dados deve ser recuperada. | O tempo de consulta é cerca de 34 vezes mais rápido devido ao armazenamento baseado em coluna e à presença de metadados. |
| Mais dados devem ser verificados por consulta. | Cerca de 99% menos dados são verificados para a execução da consulta, otimizando assim o desempenho. |
| A maioria dos dispositivos de armazenamento cobra com base no espaço de armazenamento, portanto, o formato CSV significa alto custo de armazenamento. | Menor custo de armazenamento, pois os dados são armazenados em formato compactado e codificado. |
| O esquema do arquivo deve ser inferido (levando a erros) ou fornecido (tedioso). | O esquema do arquivo é armazenado nos metadados. |
| O formato é adequado para tipos de dados simples. | Parquet é adequado até mesmo para tipos complexos como esquemas aninhados, matrizes, dicionários. |
Conclusão
Vimos por meio de exemplos que o Parquet é mais eficiente do que o CSV em termos de custo, flexibilidade e desempenho. É um mecanismo eficaz para armazenar e recuperar dados, especialmente quando o mundo inteiro está se movendo em direção ao armazenamento em nuvem e otimização de espaço. Todas as principais plataformas, como Azure, AWS e BigQuery, oferecem suporte ao formato Parquet.
