本文介绍了如何为复杂的json文档定义avro模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个想要转换为Avro的JSON文档,并且需要为此指定一种模式.这是我要为其定义avro模式的JSON文档:
I have a JSON document that I would like to convert to Avro and need a schema to be specified for that purpose. Here is the JSON document for which I would like to define the avro schema:
{ "uid": 29153333, "somefield": "somevalue", "options": [ { "item1_lvl2": "a", "item2_lvl2": [ { "item1_lvl3": "x1", "item2_lvl3": "y1" }, { "item1_lvl3": "x2", "item2_lvl3": "y2" } ] } ] }我能够为非复杂类型定义模式,但不能为复杂的选项"字段定义模式:
I'm able to define the schema for the non-complex types but not for the complex "options" field:
{ "namespace" : "my.ns", "type" : "record", "fields" : [ {"name": "uid", "type": "int"}, {"name": "somefield", "type": "string"} {"name": "options", "type": .....} ] }感谢您的帮助!
推荐答案您需要使用Avro 复杂类型,特别是数组和记录.然后将它们嵌套在一起:
You need to use Avro complex types, specifically arrays and records. And then nest these together:
{ "namespace" : "my.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"} ] } }} ] } }} ] }此外,为了提高可读性,您可以 split架构 成多个文件.
Also, to improve readiblity, you can split the schema into multiple files.
更多推荐
如何为复杂的json文档定义avro模式?
发布评论