解决Avro模式问题

时间:2018-06-26 01:18:24

标签: schema avro

有什么方法可以获取有关avro模式问题的有用信息?

我正在努力进行以下工作

...{item.key}</Text>}

我从Maven那里收到一条非常隐秘的消息:

{ "namespace": "format.data.something", "type": "record", "name": "data", "fields": [ { "name": "generator", "type": "string" }, { "name": "mapping", "type": { "name": "mappingItemSequence", "type": "array", "items": { "name": "item", "type": { "name": "mappingItem", "type": "record", "fields": [ { "name": "content", "type": "string" }, { "name": "tokenOutput", "type": { "name": "token", "type": "string" } }, { "name": "inputTokens", "type": { "name": "tokensSequence", "type": "array", "items": { "name": "tokenInput", "type": { "name": "token", "type": "string" } } } } ] } } } } ] }

我正在使用apache avro 1.8.2,并且尝试使用maven编译为Java。

非常感谢您。

1 个答案:

答案 0 :(得分:1)

本质上,问题在于您正在向数组类型声明中添加额外的信息。数组定义类型(文档here)中不需要属性name

以下架构应该适合您

{
  "namespace": "format.data.something",
  "type": "record",
  "name": "data",
  "fields": [
    {
      "name": "generator",
      "type": "string"
    },
    {
      "name": "mapping",
      "type": {
        "type": "array",
        "items": {
            "name": "mappingItem",
            "type": "record",
            "fields": [
              {
                "name": "content",
                "type": "string"
              },
              {
                "name": "tokenOutput",
                "type": {
                  "name": "token",
                  "type": "string"
                }
              },
              {
                  "name": "tokensSequence",
                  "type": { "type":"array",  "items": "string"}

              }
            ]

        }
      }
    }
  ]
}