Схема в авро сообщении

Я вижу, что в сообщения Avro встроена схема, а затем данные в двоичном формате. Если отправлено несколько сообщений и для каждого сообщения создаются новые avro-файлы, разве схема не встраивает накладные расходы? Итак, значит ли это, что для продюсера всегда важно пакетировать сообщения, а затем записывать, поэтому несколько сообщений, записываемых в один файл avro, содержат только одну схему? С другой стороны, есть ли возможность устранить встраивание схемы при сериализации с использованием средств записи Generic/SpecificDatum?

1 ответ

Я читаю следующие пункты из Avro Specs

  • Apache Avro - это система сериализации данных.
  • Авро опирается на схемы.
  • Когда данные Avro читаются, схема, используемая при записи, всегда присутствует.
  • Цель сериализации - избежать накладных расходов по каждому значению, сделать сериализацию как быстрой, так и небольшой.
  • Когда данные Avro хранятся в файле, его схема сохраняется вместе с ним.

Вы не должны использовать систему сериализации данных, если вы хотите написать 1 новый файл для каждого нового сообщения. Это противоположно цели сериализации. В этом случае вы хотите разделить метаданные и данные.

Нет возможности удалить схему при записи файла avro. Это было бы против спецификации avro.

IMO, должен быть баланс при пакетировании нескольких сообщений в один файл avro. Avro файлы должны быть идеально разбиты, чтобы повысить эффективность ввода / вывода. В случае HDFS размер блока будет идеальным для размера файла avro.

Вы правы, есть накладные расходы, если вы пишете одну запись со схемой. Это может показаться расточительным, но в некоторых сценариях возможность создания записи из данных с использованием этой схемы более важна, чем размер полезной нагрузки.

Также учтите, что даже с включенной схемой данные кодируются в двоичном формате, поэтому в любом случае они обычно меньше, чем Json.

И, наконец, такие фреймворки, как Kafka, могут подключаться к реестру схем, где вместо сохранения схемы с каждой записью они хранят указатель на схему.

Другие вопросы по тегам