如何将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上有同样的问题,但我并不确切地知道它是如何完成的。
答案 0 :(得分:4)
Avro直接使用java.util.HashMap
。您无需将其转换为其他类型。具体来说,没有GenericData
类代表地图,因此您只需将HashMap
直接放入GenericRecord
。
此this的表格中列出了所有Avro到Java的转换。请注意,GenericData
,record
,enum
和array
类型需要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" } }
]
}