我知道
定义的“普通” avro枚举enum ActionType {CREATE, REMOVE}
.pdl文件中的或通过avro模式中的这种构造方式:
{ "type": "enum",
"name": "ActionType",
"symbols" : ["CREATE", "REMOVE"]
}
问题是我的特定实体将具有可以包含值的字段 “ 01”和“ 02”。
所以我的问题是: 1.这是正确的avro枚举定义
{ "type": "enum",
"name": "MyType",
"symbols" : ["01", "02"]
}
或者我必须选择简单的
{"name":"id","type":{"type":"string","avro.java.string":"String"}}
答案 0 :(得分:0)
symbols:一个JSON数组,以JSON字符串形式列出符号(必填)。枚举中的所有符号都必须是唯一的;禁止重复。每个符号都必须与正则表达式
[A-Za-z_][A-Za-z0-9_]*
相匹配(与名称的要求相同)。
https://avro.apache.org/docs/current/spec.html#Enums
您可能需要考虑一种将原始值“ 01”,“ 02”与Avro枚举符号“ VALUE_01”,“ VALUE_02”进行转换的转换层。那将必须在您的应用程序代码中定义。它不是Avro提供的功能。另外,您可以像建议的那样将其定义为string
。这可能是最快的解决方案,但没有像枚举那样显式定义和限制可能的值。