AvroTypeException: Zeichenfolge gefunden, beim Konsumieren der Kafka-Nachricht wird eine Vereinigung erwartetJava

Java-Forum
Guest
 AvroTypeException: Zeichenfolge gefunden, beim Konsumieren der Kafka-Nachricht wird eine Vereinigung erwartet

Post by Guest »

Kontext
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

Nicht die neuesten Versionen, aber die gleichen Abhängigkeiten werden auch zum Konsumieren anderer Themen in der Produktion verwendet und die anderen Konsumenten funktionieren gut.
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": ""
},
Aber ich bin mir nicht sicher, ob dieses Problem dadurch behoben wird, da die Nachricht keine leeren Felder enthält.
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
}
Und hier ist das Schema meines Lesers:

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"
]
}
]
}
Im Leserschema ist die Reihenfolge der Felder nicht dieselbe.
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?
Nützliche Artikel zum Thema Schema Registrierung:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post