如何为复杂的json文档定义avro模式?

我有一个想要转换为Avro的JSON文档,并且需要为此指定一种模式。这是我要为其定义avro模式的JSON文档:

{

"uid": 29153333,

"somefield": "somevalue",

"options": [

{

"item1_lvl2": "a",

"item2_lvl2": [

{

"item1_lvl3": "x1",

"item2_lvl3": "y1"

},

{

"item1_lvl3": "x2",

"item2_lvl3": "y2"

}

]

}

]

}

我可以为非复杂类型定义架构,但不能为复杂的“选项”字段定义架构:

{

"namespace" : "my.com.ns",

"type" : "record",

"fields" : [

{"name": "uid", "type": "int"},

{"name": "somefield", "type": "string"}

{"name": "options", "type": .....}

]

}

谢谢您的帮助!

回答:

您需要使用Avro

复杂类型,尤其是数组和记录。然后将它们嵌套在一起:

{

"namespace" : "my.com.ns",

"name": "myrecord",

"type" : "record",

"fields" : [

{"name": "uid", "type": "int"},

{"name": "somefield", "type": "string"},

{"name": "options", "type": {

"type": "array",

"items": {

"type": "record",

"name": "lvl2_record",

"fields": [

{"name": "item1_lvl2", "type": "string"},

{"name": "item2_lvl2", "type": {

"type": "array",

"items": {

"type": "record",

"name": "lvl3_record",

"fields": [

{"name": "item1_lvl3", "type": "string"},

{"name": "item2_lvl3", "type": "string"}

]

}

}}

]

}

}}

]

}

另外,为了提高可读性,您可以将架构分为多个文件。

以上是 如何为复杂的json文档定义avro模式? 的全部内容, 来源链接: utcz.com/qa/398465.html

回到顶部