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

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


person Roshan Fernando    schedule 22.07.2018    source источник


Ответы (2)


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

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

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

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

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

person BeingSachin    schedule 27.07.2018

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

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

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

person sksamuel    schedule 22.05.2019