Maps are not a named type in Avro. The "name" field you specify in the
"map" schemas is ignored. Only record, enum, and fixed are named types.
If you wish to refer to a map by name in schemas, define a record with
a map as its single field. This adds no storage overhead: it will
serialize to the same bytes as the map alone.
Doug
On 03/31/2011 04:56 PM, felix gao wrote:
> I have create a schema as
>
> {
>
> "namespace": "avro.test",
>
> "name": "testTransferObject",
>
> "type": "map",
>
> "values": {
>
> "type": "array",
>
> "items" : {
>
> "type" : "map",
>
> "values" : {
>
> "namespace":"avro.test",
>
> "name" : "entry",
>
> "type" : "record",
>
> "fields" : [
>
> {"name":"Id", "type":"int"},
>
> {"name":"Category1", "type":"long"},
>
> {"name":"Category2", "type":"long"},
>
> {"name":"Segment1", "type":"long"},
>
> {"name":"Segment2", "type":"long"},
>
> {"name":"index", "type":"double"}
>
> ]
>
> }
>
> }
>
> }
>
> }
>
>
>
> The code generated by pecificCompiler.compileSchema only contains entry
> under the package avro.test. I am wondering where is the Map and Array
> go? And the wrapper object testTransferObject does not seems to be
> generated.
>
>
> Thanks,
>
>
> Felix
>
>
>