如何在FULL_TRANSITIVE兼容模式下为Avro枚举新增符号?
在FULL_TRANSITIVE兼容模式下为Avro枚举添加新符号的可行性及方法
在FULL_TRANSITIVE兼容模式下,给Avro枚举添加新符号是可以实现的,只要遵循以下关键规则:
- 新增符号必须追加到枚举列表末尾:Avro枚举通过索引值序列化,若在现有符号中间插入新值,旧Schema解析新数据时会出现索引映射错误,直接破坏双向兼容性。你提供的期望Schema中将
v2_0_0追加到v1_0_0之后,这个操作是合规的。 - 保留原有默认值:不能将默认值修改为新增的符号。旧Schema无法识别新符号,当新数据携带新符号时,旧Schema会使用默认值完成解析;若默认值改为新符号,旧Schema会因无法识别而抛出异常。你的修改保留了原默认值
v1_0_0,符合兼容要求。
综上,你给出的期望Schema完全满足FULL_TRANSITIVE兼容模式的要求,可以正常使用。
内容的提问来源于stack exchange,提问作者user22753854
相关产品推荐
相关产品推荐

