gpt4 book ai didi

namespaces - 如何在新旧命名空间中使用 avro 数据

转载 作者:行者123 更新时间:2023-12-02 03:01:40 32 4
gpt4 key购买 nike

我在更新 avsc 架构文件中的 namespace 时遇到了问题。因为我们使用在 Java 中创建的通用处理器将 XML 解析为 avro 并使用 avsc 文件。

我们分离了接口(interface)并创建了 2 个不同的命名空间,现在有 2 个相同的 avsc 模式,只是命名空间不同。

由于我们有使用旧命名空间生成的数据,我无法使用新命名空间生成的新数据查询此数据。

这是我的模式示例 -

旧模式 - “类型”:“记录”,
“名称”:“消息”,
“命名空间”:“com.myfirstavsc”,
“领域”:[{
"name": "Header",.....**其他字段**

新模式 - “类型”:“记录”,
“名称”:“消息”,
“命名空间”:“com.mysecondavsc”,
“领域”:[{
"name": "Header",.....**其他字段**

当我查询我的 hive 表时,我得到以下异常

Failed with exception java.io.IOException:org.apache.avro.AvroTypeException: Found com.myfirstavsc.Property, expecting union

最佳答案

我不确定您是如何尝试读取数据的,但使用 GenericDatumReader 应该可以解决您的问题,之后您可以将通用记录转换为您的特定记录。我在这里找到了类似的东西

http://apache-avro.679487.n3.nabble.com/Deserialize-with-different-schema-td4032782.html

关于namespaces - 如何在新旧命名空间中使用 avro 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45515817/

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