Ich schreibe Ihnen diese Nachricht, weil ich beim Konsumieren eines Kafka-Themas einen Deserialisierungsfehler habe, der von io.confluent.kafka.serializers.KafkaAvroDeserializer.java ausgelöst wurde.
Nachfolgend finden Sie relevante Versionen, die in meinem Spring JAVA-Projekt verwendet werden:
Code: Select all
org.apache.avro
avro
1.10.1
io.confluent
kafka-avro-serializer
7.2.1
Das Problem< /h1>
Der Fehler ist:
Verursacht durch: org.apache.avro.AvroTypeException: Zeichenfolge gefunden, Union wird erwartet
at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:308)
bei org.apache.avro.io.parsing.Parser.advance(Parser.java:86)
bei org. apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:275)
at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:187)
In der an das Thema gesendeten Nachricht werden alle Felder enthalten eine nicht leere Zeichenfolge.
Ein Teammitglied schlug vor, in jeder Felddefinition den Standardwert „“ hinzuzufügen.
Code: Select all
{
"name": "namespace_Fld1",
"type": [
"string",
"null"
],
"default": ""
},
Vielleicht gibt es einen Unterschied im Schema des Autors
Code: Select all
{"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
}
Code: Select all
"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"
]
}
]
}
Hier habe ich gelesen, dass es wichtig sein könnte: https://avro.apache.org/docs/1.8.2 /spec.html#binary_encode_complex
Auch frühere Versionen des Schemas wurden veröffentlicht und dann von dem Team, das mir eine Nachricht sendet, gelöscht.
Fragen
- Sollte mein Leserschema in irgendeiner Weise aktualisiert werden?
< li>Könnte es ein Problem mit dem Avro-Cache geben? - Sollte etwas mit dem Schema meines AVRO-Readers getan werden?