多个avro架构文件之间的依赖顺序

时间:2016-10-25 19:14:49

标签: java avro

我有多个.avsc个文件,需要某种类型,比如foo

{ "type":"fixed","size":16, "name": "foo"}

的示例:

a.avsc:

{
  "type": "record",
  "name": "A",
  "fields": [
    {
      "name": "id",
      "type": ["null", "foo"],
    },
    {
      "name": "name",
      "type": "string",
    }
  ]
}

b.avsc:

{
  "type": "record",
  "name": "B",
  "fields": [
    {
      "name": "id",
      "type": ["null", "foo"],
    },
    {
      "name": "size",
      "type": "int",
    }
  ]
}

问题在于,如果我将foo.avsc放在一个单独的文件中(或者放在这两个文件中的任何一个),avroCodeGen工具需要确保首先处理它(可能吗?怎么样?)否则我得到{{ 1}}如果我每次需要时都定义它,如下所示,我得到Exception in thread "main" org.apache.avro.SchemaParseException: Undefined name: "foo"

Exception in thread "main" org.apache.avro.SchemaParseException: Can't redefine: foo

这有什么解决方法吗? (实际记录超过两个,而且复杂得多,因此不幸的是将所有内容放在一个文件中。)

p.s:我正在使用这两个库: { "type": "record", "name": "B", "fields": [ { "name": "id", "type": ["null", { "type":"fixed","size":16, "name": "foo"}], }, { "name": "size", "type": "int", } ] } { "type": "record", "name": "A", "fields": [ { "name": "id", "type": ["null", { "type":"fixed","size":16, "name": "foo"}], }, { "name": "name", "type": "string", } ] } "org.apache.avro:avro:1.7.7"

0 个答案:

没有答案