Avro / Schema Registry - 创建不可为空/必需的新字段

Avro / Schema Registry - Make new field that is non-nullable / required

我开始使用 Avro/Confluent 的 Schema Registry 和 .avsc 文件,并希望添加一个新的字段,该字段在该架构中是必需的。

旧模式是这样的,例如:

{
  "name": ...
  "fields": [
    {"name": "one", "type": "string"}
  ]
}

我想将其更改为:


{
  "one": string,
  "two": string,
}

在尝试发展模式 时,如何使 two 字段成为必填字段/不可空字段 ?因为我必须向它添加一个 default 值,所以它总是可以是一个或另一个。

编辑

值得指出的是,我正在使用 Confluent 的 Schema Registry 并尝试演进一个 Schema!

我想我刚刚解决了我自己的问题。供将来参考:

使用 Compatibility: BACKWARDS 时无法设置绝对必填字段,显然它会破坏架构的其余部分。

所以我想答案是将其设置为 NONE(在我的例子中)。

任何其他有见解的答案都会有所帮助,但我现在正在使用这个解决方案!