AvroTypeException: найдена строка, ожидающая объединения при использовании сообщения Kafka.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 AvroTypeException: найдена строка, ожидающая объединения при использовании сообщения Kafka.

Сообщение Anonymous »

Контекст
Я пишу вам это сообщение, потому что у меня возникла ошибка десериализации при использовании темы Kafka, созданной io.confluent.kafka.serializers.KafkaAvroDeserializer.java.
Ниже приведены соответствующие версии, используемые в моем проекте Spring JAVA:

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

    
org.apache.avro
avro
1.10.1


io.confluent
kafka-avro-serializer
7.2.1

Не самые последние версии, но те же зависимости также используются для использования других тем в производстве, и другие потребления работают хорошо.
Проблема< /h1>
Ошибка:

Вызвана: org.apache.avro.AvroTypeException: найдена строка, ожидающая объединения
в org.apache.avro.io.ResolveDecoder.doAction(ResolveDecoder.java:308)
на org.apache.avro.io.parsing.Parser.advance(Parser.java:86)
на org. apache.avro.io.ResolveDecoder.readIndex(ResolveDecoder.java:275)
at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:187)

В сообщении, отправленном в тему, все поля содержат непустая строка.
Соратник предложил добавить default:"" в каждое определение поля.

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

{
"name": "namespace_Fld1",
"type": [
"string",
"null"
],
"default": ""
},
Но не уверен, что это решит проблему, поскольку в сообщении нет пустых полей.
Может быть разница в схеме писателя

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

{"type":"record",
"name":"myClassName",
"namespace":"fr.laposte.bdl.bscc.myClassName",
"fields":
[
{"name":"namespace_Fld1",
"type":["string","null"]},
{"name":"namespace_Fld2",
"type":["string","null"]},
{"name":"namespace_Fld3",
"type":["string","null"]},
{"name":"namespace_Fld4",
"type":["string","null"]},
{"name":"namespace_Fld5",
"type":["string","null"]},
{"name":"namespace_Fld6",
"type":["string","null"]},
{"name":"namespace_Fld7",
"type":["string","null"]},
{"name":"namespace_Fld8",
"type":["string","null"]},
{"name":"namespace_Fld9",
"type":["string","null"]}
],
"default":null
}
А вот схема моего читателя:

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

  "type": "record",
"name": "myClassName",
"namespace": "fr.laposte.bdl.bscc.myClassName",
"fields": [
{
"name": "namespace_Fld4",
"type": [
"string",
"null"
]
},
{
"name": "namespace_Fld5",
"type": [
"string",
"null"
]
},
{
"name": "namespace_Fld7",
"type": [
"int",
"null"
]
},
{
"name": "namespace_Fld8",
"type": [
"string",
"null"
]
}
]
}
В схеме чтения порядок полей не тот.
Здесь я прочитал, что это может быть важно: https://avro.apache.org/docs/1.8.2 /spec.html#binary_encode_complex
Кроме того, предыдущие версии схемы были опубликованы, а затем удалены командой, которая отправила мне сообщение.
Вопросы< /h1>
  • Нужно ли каким-либо образом обновлять схему моего читателя?
  • Может ли возникнуть проблема с Avro кэш?
  • Нужно ли что-то сделать с моей схемой чтения AVRO?
Полезные статьи о реестре схем:

Подробнее здесь: https://stackoverflow.com/questions/792 ... ka-message
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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