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