【问题标题】:Avro Dynamic schema change on HiveHive 上的 Avro 动态架构更改
【发布时间】:2018-02-13 10:01:46
【问题描述】:

我有一些 avro 格式 v1 的数据,并存储在 HDFS 的分区 dt=yyyymmdd 下。
现在数据维护在同一个分区下两个版本,v1和v2。
为两个不同的版本维护一个 Hive 表是否可行?

【问题讨论】:

    标签: hadoop hive avro hortonworks-data-platform jackson-dataformat-avro


    【解决方案1】:

    Avro defines a schema evolution protocol

    例如,如果 v2 只是简单地添加了一个具有默认值的字段,然后使用该架构更新表,它可以读取整个旧数据,因为它会简单地返回缺少的默认值。

    如果你破坏了兼容性,你必须做一个单独的表,然后将两者合并以获得一致的结果集

    【讨论】:

    • 有一种情况,即在新版本中添加了新字段,同时更改了少数现有列的大小/命名空间/类型。示例如下 { "type": "fixed", "name": "abcd", "namespace": "com.abc.bcd", "doc": "", "size": 1 }
    • 你只添加了一个例子,所以我不明白评论。在为以前的名称添加别名之前,重命名字段不向后兼容
    • if v1 Schema { "type": "fixed", "name": "abcd", "namespace": "com.abc.bcd", "doc": "", "size" : 1 } v2 schema { "type": "fixed", "name": "abcd", "namespace": "com.abc.bcd", "doc": "", "size": 16 } 在上面两个版本的大小是不同的。有没有办法通过单个配置单元表根据数据转换模式
    • Hive 没有固定的数据类型。在 hive 文档中... Avro Fixeds 被转换为 Array[smallint]。并且数组列没有固定大小
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2021-01-22
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多