当定义Avro模式时,可能会遇到警告。其中一个常见警告是“Undefined name”的警告。这通常发生在出现循环依赖时,即两个模式互相引用,并且一个模式定义在另一个模式之前。
例如,以下代码中会出现警告:
{
"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "friends", "type": {"type": "array", "items": "User"}}
]
}
在此示例中,模式“User”引用了自身,因此会出现“Undefined name”的警告。
要解决此问题,可以将引用模式的名称更改为完全限定的名称。例如,将“User”更改为“example.avro.User”:
{
"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "friends", "type": {"type": "array", "items": "example.avro.User"}}
]
}
在此示例中,警告已消除。
上一篇:Avro模式定义两种原始类型
下一篇:Avro模式对象递归问题。