Оба формата светятся при разных ограничениях, но имеют сильные типы со схемами и общую двоичную кодировку.В своей основной форме он сводится к этой дифференциации:
- Avro - построчный формат.Из этого следует, что вы можете добавлять построчно к существующему файлу.Эти построчные добавления также сразу видны всем читателям, работающим с этими файлами.Avro лучше всего подходит, когда у вас есть процесс, который записывает данные в ваше озеро данных потоковым (не пакетным) способом.
- Parquet - это столбчатый формат, и его файлы не могут быть добавлены.Это означает, что для новых поступающих записей вы всегда должны создавать новые файлы.В обмен на такое поведение паркет приносит несколько преимуществ.Данные хранятся в столбчатой форме, и к каждому столбцу применяется сжатие и кодирование (простое распознавание типов, низкое быстродействие, но высокоэффективное сжатие).Таким образом, файлы Parquet будут намного меньше файлов Avro.Также Паркет записывает основную статистику, согласно которой, когда вы загружаете данные из нее, вы можете перенести часть вашего выбора в I / O.Тогда только необходимый набор строк загружается с диска.Поскольку Parquet уже работает в столбчатом режиме, а большинство структур в памяти также будут столбцовыми, загрузка данных из них, как правило, происходит намного быстрее.
Поскольку ваши данные и процесс приема уже настроены нанапишите файлы Parquet. Вероятно, вам лучше остаться с Parquet, если прием данных (задержка) не станет для вас проблемой.
Типичное использование - это сочетание Parquet и Avro.Последние, недавно поступившие данные сохраняются в виде файлов Avro, поскольку это делает данные немедленно доступными для озера данных.Более исторические данные преобразуются, например, ежедневно в файлы Parquet, так как они меньше по размеру и наиболее эффективны для загрузки, но могут быть записаны только партиями.Работая с этими данными, вы загрузите оба в Spark как объединение двух таблиц.Таким образом, вы получаете преимущество эффективного чтения с помощью Parquet в сочетании с немедленной доступностью данных с Avro.Этот шаблон часто скрывают форматы таблиц, такие как Udi's Hudi или Apache Iceberg (инкубационный) , который был запущен Netflix.