avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Xu <ygnhz...@gmail.com>
Subject Re: Populating nested records using GenericRecord
Date Wed, 30 Mar 2011 15:52:50 GMT
Hi,I have met this problem too,it seems that we have to do like this:

GenericRecord t = new GenericData.Record(sch.getField("address"));
t.put("city","beijing");
r.put("address",t);


2011/3/29 Vivek Hungund <Vivek.Hungund@incentica.net>

>  Hi,
>
> I’ve got the following schema:
> {
>       "name" : "Profile",
>       "type" : "record",
>       "fields" : [
>                       { "name" : "firstName", "type" : "string" },
>                     { "name" : "address" , "type" : {
>                                                         "type" : "record",
>                                                         "name" :
> "AddressUSRecord",
>                                                         "fields" : [
>                                                                     {
> "name" : "address1" , "type" : "string" },
>                                                                     {
> "name" : "address2" , "type" : "string" },
>                                                                     {
> "name" : "city" , "type" : "string" },
>                                                                     {
> "name" : "state" , "type" : "string" },
>                                                                     {
> "name" : "zip" , "type" : "int" },
>                                                                     {
> "name" : "zip4", "type": "int" }
>                                                                    ]
>                                                     }
>                     }
>           ]
> }
>
> I’m using a GenericRecord to represent each Profile that gets created.  To
> add a firstName, it’s easy to do the following:
>
> Schema  sch =  Schema.parse(schemaFile);
> DataFileWriter<GenericRecord> fw = new DataFileWriter<GenericRecord>(newGenericDatumWriter<GenericRecord>()).create(sch,
> new File(outFile));
> GenericRecord r = new GenericData.Record(sch);
> r.put(“firstName”, “John”);
> fw.append(r);
>
> But how would I set the city, for example?  How do I represent the key as a
> string that the r.put method can understand?
>
> Thanks
>

Mime
View raw message