2016-08-03 58 views
0

我有一个avro模式如下,我想要一个模式的示例/示例记录。地图类型的等效avro记录数据

模式:

{ 
    "name" : "root", 
    "type" : "record", 
    "fields" : [ 
     { 
     "name" : "sub_rec", 
     "type" : { 
      "type" : "array", 
      "items" : { 
       "type" : "map", 
       "values" : "string" 
      } 
     } 
     } 
    ] 
} 

我试图像下面,但它不工作

{ 
    "sub_rec" : {[ 
     "key1" : "val1", 
     "key2" : "val2" 
    ]} 
} 
+0

'子rec' VS'sub_rec'的记录。此外,它是一个数组,而不是一个对象/地图 –

+0

你的意思是记录应该是这样吗? { “sub_rec”:[{[ “KEY1”: “VAL1”, “KEY2”: “VAL2” ]}]} 感谢 – ghosts

回答

0

不太熟悉的Avro,但我不知道这是不是因为数组无效不能有键值对

[ 
    "key1" : "val1", 
    "key2" : "val2" 
] 

这是我对正确记录格式的思考过程。

您从一条记录开始。我不认为这个名字在这里适用,但如果是这样的话,那可能需要是你正在序列化的类的名字。

{}

内的是,有一个名为sub_rec字段,其​​类型是一个数组。

{ "sub_rec" : [] }

在该数组场,你必须是地图类型与严格的字符串值项。

{ 
    "sub_rec" : [ 
     { "key1" : "value" }, 
     { "key2" : "value" } 
    ] 
} 

另一种解释(倒退)

你有一个映射记录,只有串

{ "key" : "string-value" } 

这些被存储在一个数组

[ { "key1" : "string-value" }, { "key2" : "string-value" } ] 

值该数组已存储在名为"sub_rec"

(同上全记录)

+0

的详细解释,但没有奏效。 – ghosts

+0

你确定你可以有嵌套类型吗?就像你有''键入“:{”type“:...}}? –

+0

是的,架构编译成功 – ghosts