地图类型的等效avro记录数据

时间:2016-08-03 21:10:57

标签: python-2.7 avro

我有一个如下的avro架构,我想要一个架构的示例/示例记录。

架构:

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

我尝试过如下,但它不起作用

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

1 个答案:

答案 0 :(得分: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"

的记录中

(与上面的完整记录相同)