我正在使用Apache Avro作为项目,但我似乎无法理解它所谓的 maps 。我还没有找到任何正在使用的地图的例子,规范上的例子很简单:
地图
地图使用类型名称
"map"
并支持一个属性:
values:
地图值的架构。假设地图键是字符串。
例如,从string到long的映射声明为:
{"type": "map", "values": "long"}
适合该架构的数据看起来像JSON一样?地图有什么用处,记录不会做得更好?
答案 0 :(得分:2)
我的理解是,差异与Java处理具有命名属性的POJO与java.util.Map
相比的方式非常相似。也就是说,Map中条目的名称是任意的,动态的;但数据类型都是相同类型(但可以java.lang.Object
表示任何类型)。
也就是说,Maps在条目方面更加通用,但占用的存储空间更多,并且处理速度比POJO慢(因为与字段的直接索引相比,通过名称查找)。
Avro本身是强类型的,因为需要Schemas,这可能比使用更多动态格式(如JSON)更不吸引人使用地图。