据this question上筑巢Avro的模式,窝正确的方式记录模式如下:嵌套的Avro模式
{
"name": "person",
"type": "record",
"fields": [
{"name": "firstname", "type": "string"},
{"name": "lastname", "type": "string"},
{
"name": "address",
"type": {
"type" : "record",
"name" : "AddressUSRecord",
"fields" : [
{"name": "streetaddress", "type": "string"},
{"name": "city", "type": "string"}
]
},
}
]
}
我不喜欢给该域的名称address
,不得不给予不同名称(AddressUSRecord
)添加到字段的模式。我可以给字段和架构使用相同的名称,address
?
如果我想在多个其他模式中使用AddressUSRecord
模式,而不仅仅是person
?如果我想在另一个模式中使用AddressUSRecord
,我们假设business
,我是否必须将其命名为其他的?
理想情况下,我想在单独的模式中定义AddressUSRecord
,然后让address
的类型参考AddressUSRecord
。但是,Avro 1.8.1支持这种开箱即用的功能并不清楚。这2014 article表明子模式需要用自定义代码来处理。在Avro 1.8.1中定义可重用架构的最佳方式是什么?
注意:我想要一个与Confluent公司的架构注册表一起使用的解决方案。有一个Google Groups thread似乎表明,架构注册表不能很好地使用模式引用。