Я пытаюсь создать схему, которая содержит общую запись.
Вот схема теста, которую я создал:
{
"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», который относится к существующей записи.Если это тип записи, то в схеме он должен быть сгенерирован как «тип»: «запись» с «имя»: «а» или «имя»: «б».Есть ли способ, которым я могу сказать:
- Запись «a» содержит поле с именем «new_field» типа записи «b»
- Запись «b» содержит поленазывается "new_field" типа запись "a"
Я не смог найти пример общей записи в схеме Avro.Поэтому любые ссылки или решения будут оценены