【问题标题】:How to avoid Map of Map of Map of Map in Avro schema如何避免 Avro 模式中 Map 的 Map 的 Map
【发布时间】:2017-03-29 10:20:24
【问题描述】:

在我的应用程序中,需要为 Map of Map(4 级嵌套地图)的 Map of Map 定义 Avro Schema。除了最后一个地图(最终内部地图)之外,我在每个级别都使用键。我想知道模式的优缺点是什么。性能有问题吗?

【问题讨论】:

  • 无法回答。这取决于数据。如果绝对必要,4 级地图不一定是问题,但我怀疑不是。
  • 应用程序的性能如何?

标签: java hadoop avro bigdata


【解决方案1】:

始终避免使用嵌套地图。

AVRO 文件格式是基于模式的。如果您使用嵌套映射,则设计模式将变得困难。 avro 也基于序列化技术工作。如果您要使用“字符串”,它可以正常工作,但不适用于其他数据类型。

【讨论】:

  • 架构设计没有问题。我已经设计了架构。但我想知道这样做的利弊
  • 这是一种性能折衷。每次在反序列化过程中,都会重新创建完整的对象。如果你使用嵌套地图,想想重新创建同一张地图有多难。
【解决方案2】:

查看您的 Schema Map 的选择>>这意味着对于给定的键,您有很多值。

这是一个经典案例,您应该开始寻找像 parquet 这样的列式数据存储。

将 AVRO 与 parquet 混合使用并展平 Avro 架构。

parquet 是 Columnar 数据格式,它不会多次存储重复的数据,而只会存储一次。

使用 ORC,您最终会得到一个简单的 AVRO 架构

http://bytepadding.com/big-data/spark/read-write-parquet-files-using-spark/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2012-06-17
    • 1970-01-01
    • 2023-03-24
    • 2014-09-15
    • 2015-11-04
    • 2014-08-31
    相关资源
    最近更新 更多