Hi,
I have an avro schema :
{
"name": "Test",
"type": "record",
"fields": [{
"name": "container",
"type": ["null", "string"]
}
]
}
The container field is an union implies it would allow any string or null value
to that field.
https://avro.apache.org/docs/1.7.7/spec.html#Unions
So to make my avro serialization code generic, I am using GenericRecord api's
for serializing the avro data.
When I am trying to serialize this record : {"container":null} , it runs
completely fine.
But in when I try to serialize the container field with data (Ex:
{"container":"testData"}), it throws error saying :
Exception in thread "main" org.apache.avro.AvroTypeException: Expected
start-union. Got VALUE_STRING
at org.apache.avro.io.JsonDecoder.error(JsonDecoder.java:697)
at org.apache.avro.io.JsonDecoder.readIndex(JsonDecoder.java:441)
at
org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:290)
at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
at
org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155)
at
org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
at
org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)
Can anyone please help me with what am I doing wrong here.
PS: I am using avro-1.7.7 version.
Thank you.
Regards
Devendra Tomar