如何在 java 中将地图写入 avro?
How to write map to avro in java?
如何将 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 上有同样的问题,但我不明白它是如何完成的。
Avro 直接使用 java.util.HashMap
。您不需要将其转换为另一种类型。具体来说,没有 GenericData
class 表示地图,因此您只需将 HashMap
直接放入 GenericRecord
.
所有 Avro 到 Java 的转换都列在这个 的 table 中。请注意,GenericData
class 是 record
、enum
、array
和 fixed
类型所必需的,但 map
则不需要.
可以像下面这样在 avro 中定义地图。注意,以下将不起作用
{ "name": "id", "type": "map", "values" : "long" }
必须这样定义
{ "name": "id", "type": { "type": "map", "values" : "long" } }
例如
{
"type": "record",
"name": "MyData",
"fields": [
{ "name": "id", "type": { "type": "map", "values" : "long" } }
]
}
如何将 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 上有同样的问题,但我不明白它是如何完成的。
Avro 直接使用 java.util.HashMap
。您不需要将其转换为另一种类型。具体来说,没有 GenericData
class 表示地图,因此您只需将 HashMap
直接放入 GenericRecord
.
所有 Avro 到 Java 的转换都列在这个 GenericData
class 是 record
、enum
、array
和 fixed
类型所必需的,但 map
则不需要.
可以像下面这样在 avro 中定义地图。注意,以下将不起作用
{ "name": "id", "type": "map", "values" : "long" }
必须这样定义
{ "name": "id", "type": { "type": "map", "values" : "long" } }
例如
{
"type": "record",
"name": "MyData",
"fields": [
{ "name": "id", "type": { "type": "map", "values" : "long" } }
]
}