avro mapreduce作业失败org.apache.avro.avrotypeexception

798qvoo8  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(442)

我面临的问题是在Map缩小avro文件,其中既有字符串和数组值。

`Describe hdfs:/test/test.avro                                       
           number                      STRING
           totalProductFee            STRING
           productID                   STRING
           otherPartyId               STRING
           module                     STRING
           client                     STRING
           Event_DA                ARRAY
           Event_DA.recType           STRING
           Event_DA.AccountID         STRING
           Event_DA.Identifier        STRING
           Event_DA.ValueBefore       STRING
           Event_DA.ValueAfter        STRING
           Event_DA.Change            STRING
           Event_DA.ExpiryDate         STRING

但是,当我尝试运行作业以获取记录值的数组[event_da]时,会出现以下异常:
org.apache.avro.avrotypeexception:在org.apache.avro.io.resolvingdecoder.doaction(resolvingdecoder)找到事件\ da,应为事件\ da。java:231)
在组合字符串类型和记录数组时,问题似乎出在输入模式文件上。
请为您提供这些类型的avro文件的示例模式文件的宝贵建议。

wz1wpwve

wz1wpwve1#

根据您的模式定义,event\ uda将是“record”类型,而不是“array”类型。您的avro架构如下所示:

{
"type":"record",
"name":"myrecordname"
"fields": [
   {"name": "number", "type": "string"},
   {"name": "totalProductFee", "type": "string"},
   .......
   {"name": "Event_DA", "type": {"type":"record, "name":"Event_DA",
       "fields": [{"name":"recType", "type":"string"},
                  {"name":"AccountID", "type":"string"},
                  .......
                 ]
        }
   }
]}

相关问题