Можно ли преобразовать общую запись в конкретную запись с той же схемой?
У меня есть объект GenericRecord схемы A, который также является сгенерированным классом Avro Java. Могу ли я как-нибудь преобразовать этот объект в настоящий тип A?
2 ответа
Вы можете конвертировать Avro GenericRecord
к SpecificRecord
с помощью deepCopy
:
SpecificData.get().deepCopy(genericRecord.schema, genericRecord)
Обратная операция - преобразование SpecificRecord
к GenericRecord
тоже работает. Обратите внимание, что этот подход не поддерживает эволюцию схемы: в систему передается только одна схема.deepCopy
и он используется как для чтения, так и для письма. Это означает, что поля копируются в зависимости от их положения, поэтомуSpecificRecord
схема должна соответствовать GenericRecord
схема точно.
Я попытался преобразовать SpecificRecord в GenericRecord, но не могу, на случай, если у кого-то есть какие-либо мысли об этом исключении, опубликованном здесь - Avro: проблема десериализации записи