需要为此创建Avro模式->
{"city":"XXXXXX", "brand":"YYYY", "discount": {} }
{"city":"XXXXXX", "brand":"YYYY", "discount": {"name": "Freedom", "value": 100} }
{"city":"XXXXXX", "brand":"YYYY", "discount": {"name": "Festive Sale", "value": 100} }
我尝试了以下Shemas,但它们不起作用:
{ "type":"record", "name":"simple_avro",
"fields":[ { "name":"city", "type":"string" },
{ "name":"brand", "type":"string" },
{ "name":"discount",
"type":{ "type":"record", "name":"discount", "default":"",
"fields":[ { "name":"discount_name", "type":"string", "default":"null" },
{ "name":"discount_value", "type":"float", "default":0 }
] }}
] }
对于折扣字段,我尝试将默认值设置为"[]", "{}", ""
,但这些都不起作用。
答案 0 :(得分:0)
在任何情况下,我都不认为允许使用空的{}
对象,但是如果您根本不允许任何对象,则必须将其设为a union type,由数组指定类型,默认值位于外部字段而不是记录主体内部
{ "name":"discount",
"type" : [
"null",
{ "type":"record", "name":"discount", "fields": [...] }
],
"default" : "null"
总的来说,我发现表达in IDL format
更容易然后,有效消息可能为{"city":"XXXXXX", "brand":"YYYY"}