我正在尝试创建一个包含共享记录的架构。
这是我创建的测试架构:
{
"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": []
}
]
}
}
]
}
要分解它:
'record_a'
和'record_b'
'record_a'
包含一个记录类型的字段。 'record_b'
类似地,'record_b'
还包含一个类型为record的字段,称为'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"
}
]
}]
在hive上对其进行测试时,上述架构失败。这是我得到的以下错误:
返回信号模式以指示问题:“ b”未定义 名称。的 “ record_field”字段的类型必须是定义的名称或{“ type”:...} 表达式。)
这意味着我不能具有引用现有记录的“类型”:“ a”或“ b”。如果它是记录类型,则在模式中应将其生成为“类型”:“记录”,并带有“名称”:“ a”或“名称”:“ b”。有没有办法我可以说:
我在Avro模式中找不到共享记录的示例。因此,任何链接或解决方案将不胜感激