Решение проблем схемы Avro - PullRequest
0 голосов
/ 26 июня 2018

Есть ли способ получить полезную информацию о проблемах схемы avro?

Я пытаюсь сделать следующую работу

{ "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" } } } } ] } } } } ] }

и получаю довольнозагадочное сообщение от maven:

Execution default of goal org.apache.avro:avro-maven-plugin:1.8.2:schema failed: No type: {"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 и пытаюсь скомпилировать в java с maven.

Большое спасибо.

1 Ответ

0 голосов
/ 26 июня 2018

Проблема заключается в том, что вы добавляете дополнительную информацию в объявление типа массива.Атрибут 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"}

              }
            ]

        }
      }
    }
  ]
}
...