gpt4 book ai didi

hadoop - 如何处理在现有字段中间添加新字段的配置单元/avro 模式演变?

转载 作者:可可西里 更新时间:2023-11-01 15:09:58 26 4
gpt4 key购买 nike

有人告诉我,Hive 能够处理向 avro 模式添加新字段的唯一方法是将新字段添加到现有字段的末尾。目前,我们的 avro 生成是按字母顺序排列的,因此新字段可能会出现在字段列表的其他位置。

那么,Hive 能否处理这个问题?我对 Hive 几乎一无所知,但我可以看到 there are good explanations关于如何从 avro 添加新字段,但我似乎找不到任何关于添加字段的位置是否影响 Hive 处理它们的能力的信息。

举个例子,见下文。 如何将新模式处理到 Hive 中?:

原始架构

{
"type":"record","name":"user",
"fields":[
{"name":"bday","type":"string"},
{"name":"id","type":"long"},
{"name":"name","type":"string"}
]
}

新架构(按字母顺序添加字段)

{
"type":"record","name":"user",
"fields":[
{"name":"bday","type":"string"},
{"name":"id","type":"long"},
{"name":"gender","type":"string"},
{"name":"name","type":"string"}
]
}

最佳答案

是的,Hive 可以处理这个,因为这是 Avro 的方式 works :

if both are records: the ordering of fields may be different: fields are matched by name


这是可能的,因为所有 Avro 文件还包括用于写入数据的模式,作者的模式。因此,当您更改 Hive 中的架构时(例如,通过修改 avro.schema.url 底层文件),您更改了阅读器的架构。但所有现有文件及其编写者的模式都保持不变。

是的,对于所有添加的新字段,无论字段顺序如何,您都必须提供默认值(使用 "default":...)。否则,读取器 (Hive) 将无法解析使用原始模式编写的文件。

关于hadoop - 如何处理在现有字段中间添加新字段的配置单元/avro 模式演变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45579588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com