Avro模式可以定义字段的名称、类型和默认值,但是无法预测字段的名称。这意味着模式将接受任意的字段名称和数量,并将所有未知字段存储为“其他”字段。可以使用下列代码示例:
Schema.Parser parser = new Schema.Parser();
String schemaStr = "{\"type\":\"record\",\"name\":\"myrecord\",\"fields\":[{\"name\":\"id\",\"type\":\"int\"}],\"additionalProperties\":\"true\"}";
Schema schema = parser.parse(schemaStr);
GenericRecordBuilder recordBuilder = new GenericRecordBuilder(schema);
recordBuilder.set("id", 1);
recordBuilder.set("unknownField", "test");
GenericData.Record record = recordBuilder.build();
System.out.println(record);
在此示例中,“additionalProperties”字段被设置为“true”,表示这个模式可以接受任意的字段。在创建记录时,未知字段“unknownField”被添加到模式中。
输出:
{"id":1,"unknownField":"test"}
上一篇:Avro模式可选的数组为空