如何在java中将地图写入avro?

时间:2016-02-24 12:02:56

标签: java dictionary avro

如何将java.util.map写入avro? 在GenericData中,我看到Record等的条目,但不是Map的条目。 http://apache-avro.679487.n3.nabble.com/How-to-write-an-AVRO-map-Something-like-GenericData-Map-td3407527.html上有同样的问题,但我并不确切地知道它是如何完成的。

2 个答案:

答案 0 :(得分:4)

Avro直接使用java.util.HashMap。您无需将其转换为其他类型。具体来说,没有GenericData类代表地图,因此您只需将HashMap直接放入GenericRecord

this的表格中列出了所有Avro到Java的转换。请注意,GenericDatarecordenumarray类型需要fixed个类,但map不需要。

答案 1 :(得分:0)

地图可以像下面的avro一样定义。注意,以下内容不起作用

{ "name": "id", "type": "map", "values" : "long" } 

必须像这样定义

{ "name": "id", "type": { "type": "map", "values" : "long" } }

e.g。

{
    "type": "record",
    "name": "MyData",
    "fields": [
        { "name": "id", "type": { "type": "map", "values" : "long" } }
    ]
}