具有相互引用记录的模式

时间:2017-06-29 08:37:44

标签: avro

我有一个架构,其中我有两个记录,其中字段包含彼此的元素。如何在Avro中转发声明记录,以便在定义之前使用其声明。

  {
"namespace": "mytest",
"name": "Foo",
"type": "record",
"fields": [
  {"name" : "bar", "type": ["null", "Bar"]}
],

"name": "Bar",
"type": "record",
"fields": [
  {"name" : "foo", "type": ["null", "Foo"]}
]
}

1 个答案:

答案 0 :(得分:2)

据我所知,你不能像你一样在模式中使用记录语句。

我认为您需要这样的架构:

{
  "type": "record",
  "name": "Foo",
  "namespace": "q44820145",
  "fields": [
    {
      "name": "bar",
      "type": {
        "type": "record",
        "name": "Bar",
        "fields": [
          {
            "name": "foo",
            "type": ["null", "Foo"]
          }
        ]
      }
    }
  ]
}