gpt4 book ai didi

java - 使用空默认值编码 avro 枚举时遇到问题

转载 作者:行者123 更新时间:2023-11-29 06:58:13 25 4
gpt4 key购买 nike

org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"document_change_type","namespace":"document","symbols":["create","update","delete"]}]: create

我为该字段传入字符串 create,它抛出上述异常。

create 是枚举的 3 个可接受值之一,是什么导致了异常?

最佳答案

假设您的 avro 架构如下所示:

{
"type" : "record",
"namespace" : "document",
"name" : "document_details",
"fields" : [
{ "name" : "documentName" , "type" : "string" },
{"name" : "documentChange" ,
"type" : ["null",
{"type" : "enum",
"namespace" : "document",
"name" : "documentChangeType",
"symbols" :["create","update","delete"]
}]
}
]
}

您可以在您的代码中为此架构创建记录:

  GenericRecord documentDetailsRecord = new GenericData.Record(schema);
GenericEnumSymbol enumSymbol = new GenericData.EnumSymbol(schema.getField("documentChange").schema().getTypes().get(1), "create");
e2.put("documentName", "someDocumentName");
e2.put("documentChange",enumSymbol);

您可以获得联合所有字段的架构列表,如下所示:

schema.getField(<unionFieldName>).schema().getTypes()

关于java - 使用空默认值编码 avro 枚举时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com