我想为基本类型定义别名/逻辑名。但是如果我直接这样做,就像下面例子中的PartyId一样,Avro-Tools不接受这个:
protocol Test {
string PartyId;
record Header {
PartyId partyId;
}
}
在IDL或AVRO模式语言中可能吗?如何?作为变通方法,我可以定义:
record PartyId {
string _value;
}
虽然二进制看起来是等价的,但在语义上(例如在生成的Java代码中)这是不相同的- PartyId是结构化类型,而不是基本类型。
我可以为枚举和记录定义自定义名称,但在我看来,AVRO并没有提供混叠基本类型的方法。
Avro中的别名用于重新映射记录名称空间
记录和枚举的名称是因为它们是实际对象,而不是原语
就像你不能通过另一个类引用Java String一样,Avro也不需要这样的特性。您可以编写文档注释或适当地命名字段,以明确每个字段是什么