Demistificar formatos de dados Hadoop: Avro, ORC, e Parquet

O que é Avro/ORC/Parquet?

Avro é um formato de dados baseado em filas cortando um sistema de serialização de dados lançado pelo grupo de trabalho Hadoop em 2009. O esquema de dados é armazenado como JSON (que significa legível por humanos) no cabeçalho enquanto o resto dos dados é armazenado em formato binário. Um ponto brilhante do Avro é o seu suporte robusto para a evolução do esquema.

ORC é um formato de dados colunar em linha altamente optimizado para leitura, escrita, e processamento de dados na Colmeia e foi criado pela Hortonworks em 2013 como parte da iniciativa Stinger para acelerar a Colmeia. Os ficheiros ORC são feitos de faixas de dados onde cada faixa contém índice, dados de linha, e rodapé (onde as principais estatísticas como contagem, max, min, e soma de cada coluna são convenientemente colocadas em cache).

Parquet é um formato de dados columnar de linha criado pela Cloudera e Twitter em 2013. Os ficheiros Parquet consistem em grupos de linhas, cabeçalho, e rodapé, e em cada grupo de linhas os dados nas mesmas colunas são armazenados em conjunto. Parquet é especializado no armazenamento e processamento eficiente de tipos de dados aninhados.

Coisas a Considerar

Leitura/Escrita Intensiva &Padrão de Consulta: Os formatos de dados baseados em linhas são globalmente melhores para o armazenamento de dados intensivos de escrita, porque anexar novos registos é mais fácil. Se apenas um pequeno subconjunto de colunas for consultado com frequência, os formatos de colunas serão os seus bons amigos, uma vez que apenas as colunas necessárias serão acedidas e transmitidas (enquanto os formatos de linhas precisam de puxar todas as colunas).

Compressão: A compressão é um dos aspectos chave a considerar aqui, uma vez que a compressão ajuda a reduzir os recursos necessários para armazenar e transmitir dados. Especialmente quando se obtém uma grande quantidade de dados (por exemplo, dados IoT), é necessária uma boa compressão. Os formatos colunares são melhores do que os formatos baseados em linhas em termos de compressão, porque o armazenamento conjunto do mesmo tipo de valores permite uma compressão mais eficiente. Para ser específico, é utilizada uma codificação diferente e mais eficiente para cada coluna. É também por isso que os formatos colunares são bons para conjuntos de dados escassos! O ORC tem a melhor taxa de compressão das três, graças às suas riscas.

Schema Evolution: Um desafio do tratamento de grandes dados é a alteração frequente do esquema de dados: por exemplo, adicionar/desactivar colunas e alterar os nomes das colunas. Se o seu esquema de dados mudar muito e precisar de alta compatibilidade para as suas antigas/novas aplicações, a Avro está aqui para si. Além disso, o esquema de dados do Avro está em JSON e o Avro é capaz de manter os dados compactados mesmo quando existem muitos esquemas diferentes.

Nested Columns: Se tem muitas colunas aninhadas complexas no seu conjunto de dados e muitas vezes só consulta um subconjunto das sub-colunas, Parquet seria uma boa escolha. Parquet é implementado utilizando o algoritmo de trituração e montagem de registos descrito no papel Dremel, que lhe permite aceder e recuperar subcolunas sem puxar o resto da coluna aninhada.

Platform Support: Por último, mas não menos importante, deve considerar a plataforma/quadro que está a utilizar ao escolher um formato de dados, uma vez que os formatos de dados têm um desempenho diferente dependendo do local onde são utilizados. O ORC funciona melhor com a Colmeia (uma vez que é feito para a Colmeia). O Spark fornece um grande suporte para o processamento dos formatos de Parquet. Avro é muitas vezes uma boa escolha para Kafka.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *