Avro (сериализация данных Apache)
Apache Avro — система сериализации данных, ориентированная на строки, использующая JSON-схемы и компактное бинарное кодирование. Avro разработан для систем обработки больших данных, где вместе с данными передаётся и эволюционирующая схема.
MIME-тип
application/avro
Тип
Бинарный
Сжатие
Без потерь
Преимущества
- + 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
Недостатки
- − Row-based — less efficient than Parquet for analytical queries
- − Not human-readable in binary form
- − JSON schema specification has a learning curve
Когда использовать .AVRO
Используйте Avro для сообщений Kafka, где критична эволюция схемы, для пайплайнов Hadoop и обмена данными между системами с требованием совместимости схем.
Технические детали
Файлы Avro начинаются с JSON-схемы в заголовке, за которой следуют блоки данных в бинарной кодировке. Каждый блок может быть сжат независимо (null, deflate, snappy). Avro поддерживает эволюцию схемы: можно добавлять/удалять поля со значениями по умолчанию. Schema Registry (Confluent) управляет версиями схем для потоков Kafka.
История
Дуг Каттинг (создатель Hadoop) разработал Avro в 2009 году. В отличие от Thrift и Protocol Buffers, Avro хранит схему вместе с данными, устраняя необходимость генерации кода и обеспечивая развитие схемы.