簡體   English   中英

無法將null枚舉編碼為avro枚舉

[英]Trouble encoding avro enum with null default

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM