在 Java Avro 中,如何将下面的data1、data2和data3解析为GenericRecord。
//Schema
{
"type": "record", "name": "user",
"fields": [
{"name": "name", "type": "string"},
{"name": "colour", "type": "string", "default": "green"},
{"name": "mass", "type": "int", "default": 100}
]
}
//data 1
{"name":"Sean"}
//data 2
{"name":"Sean", "colour":"red"}
//data 3
{"name":"Sean", "colour":"red", "mass":200}
Run Code Online (Sandbox Code Playgroud)
我看过一些关于模式演变等的讨论,以及将作者模式和读者模式传递给 GenericDatumReader 和 ResolvingDecoder 的能力,但我只有一个模式。一般来说,我不知道作者使用了什么确切的模式(如果有的话)。
我可以通过解析架构并删除所有具有默认值的字段来“推断”一个“基本”架构。但是,如果有多个具有默认值的字段,某些字段可能/可能不存在,因此我将无法推断出与数据兼容的架构。
例如