2017-06-29 110 views
1

我有一個模式,我有兩個包含對方元素的字段的記錄。你如何在Avro中聲明一個記錄,以便你可以在定義之前使用它的聲明。相互記錄相關的模式

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

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

回答

1

據我所知,你不能像使用的那樣在模式中使用記錄語句。

我認爲你需要這樣的模式:

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

我面前,但是我一直在尋找一種方式,所以我可以保持它自己的文件中的每個定義已經看到了這句法。然而,在高音揚聲器API上工作,我仍然可以參考其他文件中的內部聲明。所以我客人這是我們今天最好的。所以我會將此標記爲答案。 – Fabio