我有两个架构文件
首先是position.avsc
{
"type":"enum", "name": "Position", "namespace": "avro.examples.baseball",
"symbols": ["P", "C", "B1", "B2", "B3", "SS", "LF", "CF", "RF", "DH"]
}
其次是player.avsc
{
"type":"record", "name":"Player", "namespace": "avro.examples.baseball",
"fields": [
{"name": "number", "type": "int"},
{"name": "first_name", "type": "string"},
{"name": "last_name", "type": "string"},
{"name": "position", "type": {"type": "array", "items": "avro.examples.baseball.Position"} }
]
}
我可以在avdl
中导入这些架构@namespace("avro.examples.baseball")
protocol Baseball {
import schema "position.avsc";
import schema "player.avsc";
}
但我想在 json 中定义上述协议,并在协议文件中导入这些模式。 这将有助于模式的可重用性
答案 0 :(得分:3)
可以使用两种类型的文件指定Avro idl架构
如果是avpr文件,我们无法导入外部架构。所有必需的模式必须存在于同一文件中。
对于avdl,我们可以从avsc文件导入外部模式。
我已为avro 1.7.7
验证了这一点