Thank you so much :) On Wed, Apr 13, 2011 at 9:31 PM, Felix.徐 <[email protected]> wrote:
> I have replied it, you should use s.getValueType() to get the schema of > value in map. > And getElementType() is for Array. > > > 2011/4/14 Scott Carey <[email protected]> > >> Only records have fields. Maps have value types: >> >> >> http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html#getValueType%28%29 >> >> Likewise, arrays have >> http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html#getElementType%28%29 >> >> and unions have >> http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html#getTypes%28%29 >> >> >> On 4/13/11 10:38 AM, "Weishung Chung" <[email protected]> wrote: >> >> It looks like only the RecordSchema has implemented the getField method >> getField(String fieldname) >> >> If I were to use the example schema, (map without embedded in a record), >> I can't use the getField method because the MapSchema does not implement >> the getField method, so, the following doesn't work >> >> Schema s = Schema.parse(new File(MY_SCHEMA_FILE); >> GenericRecord t = new GenericData.Record(s.getField("hi").schema()); >> >> So, I am curious how to create the GenericRecord instance to populate >> fields a and b of the record before inserting into the Map? >> >> >> >> On Wed, Apr 13, 2011 at 12:16 PM, Scott Carey <[email protected]>wrote: >> >>> In general you don't need to wrap an unnamed complex type (map, array, >>> union) in a record. >>> >>> Some language APIs might not support these 'naked' types with the same >>> level of ease that they support named ones. >>> >>> Note in your schema below the "name" field -- "mapping" is completely >>> ignored. Maps don't have names. >>> >>> Other 'nameless' schemas are ones with a single intrinsic data type, >>> like: >>> >>> { "type": "int" } >>> >>> >>> On 4/13/11 9:52 AM, "Weishung Chung" <[email protected]> wrote: >>> >>> Hello, >>> >>> I have a question about Avro schema. Does the map type need to be >>> embedded in a record? Could I have a schema like this without embedding the >>> map in a record? >>> >>> { >>> "name": "mapping", >>> "type": "map", >>> "values":{ >>> "type":"record", >>> "name":"hi", >>> "fields":[ >>> {"name":"a","type":"string"}, >>> {"name":"b","type":"string"} >>> ] >>> } >>> } >>> >>> >>> Thank you >>> >>> >> >
