Avro не может прочитать сообщение с новым значением перечисления, хотя было указано значение перечисления по умолчанию.JAVA

Программисты JAVA общаются здесь
Anonymous
Avro не может прочитать сообщение с новым значением перечисления, хотя было указано значение перечисления по умолчанию.

Сообщение Anonymous »

У меня есть базовая схема Avro с этим перечислением:

Код: Выделить всё

enum ColorType {
BLUE,
YELLOW,
GREEN,
UNKNOWN
} = UNKNOWN;
Значение UNKNOWN следует использовать в случае обнаружения неизвестного значения перечисления.
У меня есть обновленная схема Avro с тем же перечисление, но расширенное значением BLACK.

Код: Выделить всё

enum ColorType {
BLUE,
YELLOW,
GREEN,
BLACK,
UNKNOWN
} = UNKNOWN;
Теперь я пытаюсь прочитать сообщение Avro в формате JSON, написанное по обновленной схеме, с помощью средства чтения базовой схемы.< /p>
Java-код выглядит следующим образом:

Код: Выделить всё

var jsonDecoder = DecoderFactory.get().jsonDecoder(TreeRecord.SCHEMA$, resourceAsStream);
return new SpecificDatumReader(TreeRecord.SCHEMA$).read(null, jsonDecoder);
Я получаю следующую ошибку:

Код: Выделить всё

org.apache.avro.AvroTypeException: Unknown symbol in enum BLACK
at org.apache.avro.io.JsonDecoder.readEnum(JsonDecoder.java:331)
at org.apache.avro.io.ResolvingDecoder.readEnum(ResolvingDecoder.java:261)
at org.apache.avro.generic.GenericDatumReader.readEnum(GenericDatumReader.java:268)
at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:182)
Почему Avro не может десериализовать обновленное сообщение с помощью базовой схемы, хотя для перечисления было указано значение по умолчанию? Как можно достичь полной совместимости со схемами Avro?

Подробнее здесь: https://stackoverflow.com/questions/762 ... -value-was

Вернуться в «JAVA»