首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Avro错误:地图字段上的“未知联合分支”

Avro错误:地图字段上的“未知联合分支”
EN

Stack Overflow用户
提问于 2017-02-27 22:06:22
回答 1查看 3.1K关注 0票数 2

使用Apache的avro-tools包,我已经从我的.avsc类生成了一个.avsc文件。我将ReflectData指向我的主类,并使用它输出模式。这个问题有很多方面,但从根本上说,我的问题是无法创建一个Avro文件,即使模式数据是由同一个类生成的。

Java中的代码是:Schema x = ReflectData.AllowNull.get().getSchema(MessageEnvelope.class);

因此,我将上面的输出粘贴到一个文件中,并称之为msgEnvelope.avsc

发生错误的架构文件的行是:

代码语言:javascript
复制
   {
  "type": "record",
  "name": "MessageEnvelope",
  "namespace": "data.decoder",
  "fields": [
    {
      "name": "headers",
      "type": [
        "null",
        {
          "type": "map",
          "values": "string"
        }
      ],
      "default": null
    },
....
}

我的JSON数据中对应于模式的这一部分的部分是:

代码语言:javascript
复制
{"headers": {"idno":"123", "maker":"xyz"}}

并且运行avro-tools会产生一个org.apache.avro.AvroTypeException: Unknown union branch idno,目标是允许headers包含一个可变数目的键值对。

为了产生这个错误,我运行了java -jar avro-tools.jar fromjson --schema-file msgEnvelope.avsc tgtJson.json

谢谢你能提供的任何帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 15:47:28

我认为这一切都是因为json

下面是一个例子:

Java类:

代码语言:javascript
复制
public class MessageEnvelope {
    Map<String, String> headers;

    public Map<String, String> getHeaders() {
        return headers;
    }

    public void setHeaders(Map<String, String> headers) {
        this.headers = headers;
    }
}

Avro模式:

代码语言:javascript
复制
{
    "type":"record",
    "name":"MessageEnvelope",
    "namespace":"data.decoder",
    "fields":[{
        "name":"headers",
        "type":[
            "null",
            {"type":"map","values":"string"}
        ],
        "default":null
    }]
}

Json数据:

代码语言:javascript
复制
{
    "headers":{
        "map":{
            "maker":"xyz",
            "idno":"123"
        }
    }
}

我和您一样调用java -jar avro-tools-1.8.1.jar fromjson --schema-file msgEnvelope.avsc msgEnvelope.json,没有看到任何异常。

也许你应该试试我用过的那个json?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42496640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档