Пример Avro Shared Record - PullRequest
       23

Пример Avro Shared Record

0 голосов
/ 25 октября 2018

Я пытаюсь создать схему, которая содержит общую запись.

Вот схема теста, которую я создал:

{
    "type": "record",
    "name": "record_a",
    "namespace": "namespace.a",
    "doc": "",
    "fields": [
        {
            "name": "record_field",
            "doc": "some_doc",
            "type": 
                {
                    "type": "record",
                    "name": "record_b",
                    "namespace": "namespace.b",
                    "doc": "some_doc",
                    "fields": [
                        "name": "record_field",
                        "doc": "some_doc",
                        "type":
                            {
                                "type": "record",
                                "name": "record_a",
                                "namespace": "namespace.a",
                                "doc": "",
                                "fields": []
                            }
                    ]
                } 
        }
    ]
}

Чтобы разбить ее:

  • Есть 2 записи: 'record_a' и 'record_b'
  • 'record_a' содержит поле типа записи.
  • Запись называется 'record_b'

Аналогично, 'record_b' также содержит поле типа записи и называется 'record_a'.

Поэтому я хотел бы знать, приемлемо ли это.

В предыдущей попытке я создал схему общей записи:

[{
    "type": "record",
    "name": "a",
    "namespace": "name.space.a",
    "doc": "",
    "fields": [
        {
            "name": "record_field",
            "doc": "",
            "type": "b"
        }
    ]
}, {
    "type": "record",
    "name": "b",
    "namespace": "name.space.a",
    "doc": "",
    "fields": [
        {
            "name": "record_field",
            "doc": "",
            "type": "a"
        }
    ]
}]

Вышеприведенная схема завершается ошибкой при тестировании ее в кусте.Это следующая ошибка, которую я получаю:

Возвращается схема сигнала, указывающая на проблему: «b» не определенное имя.Тип поля «record_field» должен быть определенным именем или выражением {«type»: ...}.)

Это означает, что у меня не может быть «type»: «a»или «b», который относится к существующей записи.Если это тип записи, то в схеме он должен быть сгенерирован как «тип»: «запись» с «имя»: «а» или «имя»: «б».Есть ли способ, которым я могу сказать:

  1. Запись «a» содержит поле с именем «new_field» типа записи «b»
  2. Запись «b» содержит поленазывается "new_field" типа запись "a"

Я не смог найти пример общей записи в схеме Avro.Поэтому любые ссылки или решения будут оценены

...