avro中的地图和记录有什么区别?

时间:2012-04-17 22:16:17

标签: types map avro

我正在使用Apache Avro作为项目,但我似乎无法理解它所谓的 maps 。我还没有找到任何正在使用的地图的例子,规范上的例子很简单:

  

地图

     

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

     
      
  • values:地图值的架构。
  •   
     

假设地图键是字符串。

     

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

     

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

适合该架构的数据看起来像JSON一样?地图有什么用处,记录不会做得更好?

1 个答案:

答案 0 :(得分:2)

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

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

Avro本身是强类型的,因为需要Schemas,这可能比使用更多动态格式(如JSON)更不吸引人使用地图。

相关问题