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(在我的例子中)。
任何其他有见解的答案都会有所帮助,但我现在正在使用这个解决方案!
我开始使用 Avro/Confluent 的 Schema Registry 和 .avsc 文件,并希望添加一个新的字段,该字段在该架构中是必需的。
旧模式是这样的,例如:
{
"name": ...
"fields": [
{"name": "one", "type": "string"}
]
}
我想将其更改为:
{
"one": string,
"two": string,
}
在尝试发展模式 时,如何使 two
字段成为必填字段/不可空字段 ?因为我必须向它添加一个 default
值,所以它总是可以是一个或另一个。
编辑
值得指出的是,我正在使用 Confluent 的 Schema Registry 并尝试演进一个 Schema!
我想我刚刚解决了我自己的问题。供将来参考:
使用 Compatibility: BACKWARDS 时无法设置绝对必填字段,显然它会破坏架构的其余部分。
所以我想答案是将其设置为 NONE(在我的例子中)。
任何其他有见解的答案都会有所帮助,但我现在正在使用这个解决方案!