小编Zor*_*nze的帖子

Java 中的 Avro 枚举序列化

我正在尝试将枚举值序列化为 Avro 消息并发送它。该架构是用以下内容构建的:

Schema myschema = SchemaBuilder.record("com.testing.schemas").fields()
.name("enumTest").type().nullable().enumeration("aname")
.symbols("a","b","c","d","e").noDefault();
Run Code Online (Sandbox Code Playgroud)

看起来像这样

{"name":"enumTest","type":
[{"type":"enum","name":"aname",
"symbols":"a","b","c","d","e"]}
,"null"]}
Run Code Online (Sandbox Code Playgroud)

我的代码:

GenericRecord record = new GenericData.Record(myschema);
GenericData.EnumSymbol symbol = new GenericData.EnumSymbol(
myschema.getField("enumTest").schema(), "a");
record.put("enumTest", symbol);
Run Code Online (Sandbox Code Playgroud)

当尝试发送消息时,我收到错误:

Error serializing Avro message
org.apache.avro.UnresolvedUnionException: Not in union [{"type":"enum","name":"aname","namespace":"com.testing.schemas","symbols":["a","b","c","d","e"]},"null"]: a
Run Code Online (Sandbox Code Playgroud)

我缺少什么?谢谢。

java enums avro confluent-schema-registry

2
推荐指数
1
解决办法
4027
查看次数

标签 统计

avro ×1

confluent-schema-registry ×1

enums ×1

java ×1