2012-04-17 65 views
0

我为一个项目使用Apache Avro,但我似乎无法理解它所称的地图。我一直没能找到使用地图的任何实例,并在规范的例子是相当裸:avro中的地图和记录有什么区别?

地图

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

  • values:地图值的模式。

映射键被假定为字符串。

例如,从字符串的地图长都被定义为:

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

什么可能适合该模式的样子作为JSON数据?地图有什么用途,记录不会更好?

回答

2

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

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

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