Можно ли преобразовать общую запись в конкретную запись с той же схемой?

У меня есть объект GenericRecord схемы A, который также является сгенерированным классом Avro Java. Могу ли я как-нибудь преобразовать этот объект в настоящий тип A?

2 ответа

Вы можете конвертировать Avro GenericRecord к SpecificRecord с помощью deepCopy:

SpecificData.get().deepCopy(genericRecord.schema, genericRecord)

Обратная операция - преобразование SpecificRecord к GenericRecordтоже работает. Обратите внимание, что этот подход не поддерживает эволюцию схемы: в систему передается только одна схема.deepCopyи он используется как для чтения, так и для письма. Это означает, что поля копируются в зависимости от их положения, поэтомуSpecificRecord схема должна соответствовать GenericRecord схема точно.

См. http://apache-avro.679487.n3.nabble.com/Direct-conversion-from-Generic-Record-to-Specific-Record-tp4029324p4029339.html.

Я попытался преобразовать SpecificRecord в GenericRecord, но не могу, на случай, если у кого-то есть какие-либо мысли об этом исключении, опубликованном здесь - Avro: проблема десериализации записи

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