I'm hitting an issue with using an alias. When I do the schema evolution, I
get an exception with "missing required field." As far I know, this should
be a viable schema. Is there something I'm missing?
Here is the version 1 of the schema:
{
"namespace": "model",
"type": "record",
"name": "SimpleCard",
"fields": [
{
"name": "suit",
"type": "string",
"doc" : "The suit of the card"
}
]
}
Here is version 2 of the schema. The changes are a different record name
and I've aliased the suit/cardsuit field.
{
"namespace": "model",
"type": "record",
"name": "SimpleCardV2",
"fields": [
{
"name": "cardsuit",
"type": "string",
"doc" : "The suit of the card",
"alias": ["suit"]
}
]
}
Here is the stack trace of the error:
org.apache.avro.AvroTypeException: Found model.SimpleCard, expecting
model.SimpleCardV2, missing required field cardsuit
at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:292)
at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
at
org.apache.avro.io.ResolvingDecoder.readFieldOrder(ResolvingDecoder.java:130)
at
org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:215)
at
org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:175)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)
at
org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:145)
at helpers.AvroReaderHelper.getObject(AvroReaderHelper.java:56)
Thanks,
Jesse