如何为Avro字段添加自定义注解/元数据?对标Protobuf Option
Avro Schema添加自定义元数据的方法
可以,Avro Schema完全支持为字段添加这类自定义元数据信息,实现类似Protobuf Option的注解效果。
在Avro的JSON Schema定义中,你有两种常用方式添加元数据:
- 用标准的
doc字段添加描述性文本; - 直接在字段定义中加入自定义键值对,Avro解析器会保留这些额外属性,供业务逻辑按需处理。
对应你给出的Protobuf示例,Avro版本的Schema可以这么写:
{ "type": "record", "name": "FarmerRegisteredEvent", "fields": [ { "name": "uuid", "type": "string", "pi2schema.subject_identifier": true }, { "name": "personalData", "type": [ { "type": "record", "name": "ContactInfo", "fields": [] // 这里补充ContactInfo的具体字段定义 }, { "type": "record", "name": "EncryptedPersonalData", "namespace": "pi2schema", "fields": [] // 这里补充EncryptedPersonalData的具体字段定义 } ] }, { "name": "registeredAt", "type": { "type": "long", "logicalType": "timestamp-millis" } }, { "name": "referrer", "type": ["null", "string"], "default": null } ] }
需要注意:Avro本身不会对这些自定义元数据做内置校验或处理,所有自定义属性的解析和逻辑实现,都需要由使用该Schema的应用程序自行完成,这和Protobuf Option的使用逻辑一致。
内容的提问来源于stack exchange,提问作者curiousdev
相关产品推荐
相关产品推荐

