Java 使用空默认值编码avro枚举时出现问题
我正在为这个字段传递字符串Java 使用空默认值编码avro枚举时出现问题,java,avro,Java,Avro,我正在为这个字段传递字符串create,它正在抛出上面的异常 create是枚举的3个可接受值之一,是什么导致了异常?假设您的avro架构如下所示: org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"document_change_type","namespace":"document","symbols":["create","update","delete"]}]: cr
create
,它正在抛出上面的异常
create
是枚举的3个可接受值之一,是什么导致了异常?假设您的avro架构如下所示:
org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"document_change_type","namespace":"document","symbols":["create","update","delete"]}]: create
您可以在代码中创建此架构的记录,如下所示:
{
"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"]
}]
}
]
}
您可以获得union所有字段的架构列表,如下所示:
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().schema().getTypes()
假设您的avro架构如下所示:
org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"document_change_type","namespace":"document","symbols":["create","update","delete"]}]: create
您可以在代码中创建此架构的记录,如下所示:
{
"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"]
}]
}
]
}
您可以获得union所有字段的架构列表,如下所示:
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().schema().getTypes()