Не удается разобрать схему AVRO на Голанге - PullRequest
0 голосов
/ 14 февраля 2019

У меня проблемы с анализом моей схемы AVRO JSON.Я пытаюсь использовать функцию avro.ParseSchema из этой библиотеки: https://github.com/go-avro/avro. Однако я получаю следующее сообщение об ошибке:

Неизвестное имя типа: массив

Я пытался исправить это в течение долгого времени, но я не могу сделать это правильно.У меня реализованы следующие структуры:

import (
   "bytes"
   "log"

   avro "gopkg.in/avro.v0"
)

type Matrix struct {
    UID  int         `avro:"uid"`
    Data [][]float64 `avro:"data"`
}

type MatrixContainer struct {
    MatricesArray []*Matrix `avro:"matrices_array"`
}

//Somewhere in here it goes wrong
 schema, err := avro.ParseSchema(`{
        "type": "record",
        "name": "MatrixContainer",
        "fields": [
            {
                "name": "matrices_array", 
                "type": "array", 
                "items": {
                    "type": "record",
                    "name": "Matrix",
                    "fields": [
                        {"name": "uid","type":"int"},
                        {"name": "data","type":"array","items":
                            {"type":"array","items":"double"}
                        }
                    ]
                }
            }

        ]
    }`)

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 июля 2019

внутри поля записи вы не можете сказать «тип»: «массив»;вам нужно сделать так, чтобы "type" был действительной схемой avro, а не допустимым типом avro.

Попробуйте следующее:

{
    "type": "record",
    "name": "MatrixContainer",
    "fields": [
        {
            "name": "matrices_array",
            "type": {
                "type": "array",
                "items": {
                    "type": "record",
                    "name": "Matrix",
                    "fields": [
                        {
                            "name": "uid",
                            "type": "int"
                        },
                        {
                            "name": "data",
                            "type": {
                                "type": "array",
                                "items": {
                                    "type": "array",
                                    "items": "double"
                                }
                            }
                        }
                    ]
                }
            }
        }
    ]
}

ref: https://avro.apache.org/docs/1.8.1/spec.html#schema_record

...