Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用空默认值编码avro枚举时出现问题_Java_Avro - Fatal编程技术网

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()