據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似乎表明,架構註冊表不能很好地使用模式引用。