Olá galera o/

No post de hoje, vamos aprender um pouco sobre os tipos de arquivos que são mais utilizados nos projetos de big data.

Arquivos Citados

  • CSV
  • Parquet
  • Avro
  • ORC
  • Delta

CSV

  • CSV (Comma Separated Values)
  • É um formato de arquivo simples que armazena dados em linhas, com cada linha representando uma observação.
  • Os dados geralmente são separados por vírgulas, podendo haver outros tipos de sepadores como Pipe ( | ), Ponto e Vírgula ( ; ), Tabulação e etc. CSV é um formato de arquivo texto simples, é fácil de entender e editar manualmente.
  • Não é otimizado para leitura eficiente ou compressão.
  • Amplamente utilizado para exportar e importar dados de sistemas diferentes, mas não é eficiente para análises de Big Data.

Parquet

  • É um formato de arquivo colunar que armazena dados em colunas separadas.
  • Formato de coluna altamente eficiente e otimizado para análises de Big Data.
    • Em vez de armazenar os dados linha por linha, ele os armazena coluna por coluna. Isso resulta em uma leitura mais eficiente para consultas que envolvem apenas algumas colunas, pois o sistema só precisa acessar os dados necessários.
  • Compressão avançada para economia de espaço e alta velocidade de leitura.
  • Suporta tipos de dados complexos. Um ponto importante é que este formato preserva a tipagem original do arquivo quando é utilizado como formato final após um processo de extração de dados.
  • Pode ser lido por vários ecossistemas como Apache Spark, Hive, Impala, entre outros.
  • Link documentação oficial: https://parquet.apache.org/docs/

Avro

  • É um formato de arquivo colunar e flexível que pode ser usado para armazenar dados estruturados e não estruturados.
  • Compatível com várias linguagens de programação.
  • Suporta evolução do esquema (permitindo adicionar ou modificar campos sem interromper a compatibilidade).
  • Formato de arquivo binário que armazena dados em um esquema JSON.
  • É usado principalmente em sistemas Hadoop.
  • Link documentação oficial: https://avro.apache.org/docs/1.11.1/

ORC

  • ORC (Optimized Row Columnar)
  • É um formato de arquivo colunar otimizado para leitura eficiente e compressão de dados.
  • Oferece recursos como compressão, estatísticas de coluna e suporte para tipos de dados complexos.
  • Adequado para consultas analíticas em ambientes de Big Data
  • Altamente compatível com o ecossistema do Apache Hadoop.
  • Link documentação oficial: https://orc.apache.org/

Delta

  • É um formato de arquivo desenvolvido pela Databricks para lidar com operações de ingestão, atualização e exclusão de dados de forma confiável em ambientes de Big Data.
  • É baseado no Parquet.
  • O delta permite que os dados sejam gravados de forma incremental, o que torna mais eficiente o processamento de dados em streaming e de alterações.
  • Suporta transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade). Otimizando a ingestão, atualização e exclusão de dados em armazenamentos de Big Data.
  • Combina as vantagens de Parquet com recursos de controle de versão e esquema.
  • Muito usado em ambientes de dados em constante evolução.
  • Link documentação oficial: https://docs.delta.io/latest/index.html
  • O Time Travel no Delta Lake se refere à capacidade de rastrear e acessar diferentes versões dos dados ao longo do tempo. Basicamente, o Time Travel no Delta Lake cria uma espécie de linha do tempo dos dados, facilitando a gestão, auditoria e análise histórica, proporcionando uma visão detalhada das mudanças nos dados ao longo do tempo.
  • Com o Time Travel, é possível:
  • Acesso a versões anteriores: Consultar e acessar snapshots antigos dos dados, permitindo analisar o estado dos dados em momentos específicos.
  • Recuperação de dados perdidos: Recuperar dados que foram inadvertidamente modificados ou excluídos, revertendo para uma versão anterior conhecida.
  • Análises históricas: Realizar análises comparativas entre diferentes versões dos dados para entender mudanças, tendências e padrões ao longo do tempo.

Tabela comparativa

FormatoCaracterísticasUso Principal
CSVSimples, texto, sem otimização, fácil de ler/gravarexportação/importação de dados, pequenas tabelas
ParquetColunar, alta eficiência de leitura/compressãoAnálise de Big Data, ecossistemas como Spark
AvroBinário, compacto, esquema JSONTransferência de dados em sistemas Hadoop
ORCColunar, eficiência de leitura/compressãoConsultas de alto desempenho com Hive/Spark
DeltaTransações ACID, controle de versão (Time Travel), evolução de estrutura das tabelasAnálise de Big Data, Armazenamento de dados em constante evolução

Outras característas importantes!

  • Suporte a esquemas: É a descrição dos dados armazenados no arquivo. Os esquemas permitem que os dados sejam interpretados de forma consistente e tornam mais fácil escrever consultas.

  • Suporte a particionamento: O particionamento que é uma forma de dividir os dados em arquivos menores. O particionamento pode melhorar o desempenho das consultas, pois as consultas podem ser executadas apenas nos arquivos necessários.

  • Suporte a atualizações: É a forma de modificar os dados existentes em um arquivo. As atualizações podem ser usadas para corrigir erros ou adicionar novos dados aos arquivos.

  • Suporte a metadados: Metadados são informações sobre os dados armazenados no arquivo. Os metadados podem ser usados para descrever os dados, rastrear mudanças nos dados e melhorar o desempenho das consultas.

  • Suporte a segurança: É a forma de proteger os dados contra acesso não autorizado. A segurança pode ser usada para criptografar os dados ou restringir o acesso aos dados a usuários autorizados.

  • Suporte a streaming: É a forma de processar dados em tempo real. O streaming pode ser usado para analisar dados de fontes como sensores, redes sociais e dispositivos móveis.

Considerações Finais!

Neste post, aprendemos um pouco sobre os tipos de arquivos mais utilizados em ambientes de big data e suas principais características. A escolha do formato de arquivo deve ser alinhado com todos os envolvidos do projeto para que não exista um retrabalho, além disso, a escolha deve ser a mais adequada para necessidades específicas do projeto.

Atualmente o formato Delta tem ganhado bastante relevância por conta da utilização do Databricks e além das características citadas na tabela acima (Transações ACID, controle de versão, evolução de estrutura das tabelascomo serviço de tratamento de dados).

Tenho uma preferência em trabalhar com os formatos parquet e delta. Geralmente capturo os dados de origem (excel, csv, tabelas de banco de dados) transformo em formato delta, posteriormente, através de um script do Databricks leio o arquivo parquet e transformo em formato Delta para trabalhar com Transações ACID).

Lembrando que, novos formatos estão surgindo a todo momento, precisamos sempre estar atentos com as novidades do mercado e verificar de fato se este novo formato será relevante durante a evolução dos projetos de big data.

Espero que tenham gostado, boa leitura e bons estudos.

Quem quiser mandar comentários, sugestões, críticas ou dicas complementares, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para poder melhorar as postagens para vocês.

Até a próxima o/

Acessem nossas Redes Sociais: