Apache Avro (Serializacao Baseada em Linhas)
Apache Avro e um sistema de serializacao de dados baseado em linhas com schemas ricos definidos em JSON. E amplamente utilizado no ecossistema Hadoop para armazenamento de dados e chamadas de procedimento remoto.
Tipo MIME
application/avro
Tipo
Binário
Compressão
Sem perdas
Vantagens
- + Schema evolution — add/remove fields without breaking readers
- + Compact binary encoding with efficient compression
- + Self-describing — schema embedded in the file
- + Standard in Kafka and the Hadoop ecosystem
Desvantagens
- − Row-based — less efficient than Parquet for analytical queries
- − Not human-readable in binary form
- − JSON schema specification has a learning curve
Quando usar .AVRO
Use o Avro para streaming de dados (Kafka), armazenamento de data lakes baseado em linhas e cenarios onde a evolucao de esquema e a troca de dados entre linguagens sao requisitos.
Detalhes técnicos
O Avro utiliza schemas JSON para definicao de tipos e codificacao binaria compacta para dados. Os ficheiros incluem o schema no cabecalho, permitindo deserializacao autodescritiva. Os dados sao organizados em blocos comprimiveis com compressao Deflate ou Snappy.
Histórico
Doug Cutting (criador do Hadoop) desenvolveu o Avro como parte da Apache, com o lancamento 1.0 em 2009. Foi concebido para superar as limitacoes dos Writable do Hadoop com schemas autodescritivos e evolucao de esquema.