3

我正在将Apache Avro用于一个项目,但我似乎无法理解它所说的maps。我找不到任何正在使用的地图示例,并且规范上的示例非常简单:

地图

地图使用类型名称"map"并支持一个属性:

  • values:地图值的架构。

映射键被假定为字符串。

例如,从 string 到 long 的映射声明为:

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

适合该模式的数据可能看起来像 JSON 吗?地图有什么用处,而记录并没有做得更好?

4

1 回答 1

3

我的理解是,这种差异与 Java 处理具有命名属性的 POJO 的方式非常相似,而java.util.Map. 也就是说,Map 中的条目名称是任意的、动态的;但是数据类型都是相同的类型(但是可以java.lang.Object指示任何类型)。

也就是说,Maps 在条目方面更通用,但比 POJO 占用更多的存储空间并且处理速度更慢(因为按名称查找,与字段的直接索引相比)。

Avro 本身是相当强类型的,因为需要 Schemas,这可能使 Maps 的使用不如 JSON 等更动态的格式吸引人。

于 2012-04-24T05:30:55.870 回答