You can use the schema David provided directly for arrays of the User
record. But if you want to have a named type for an array of User then
you need to define a record with that as a field, e.g., something like:
{"type": "record",
"name": "Users",
"fields": [
"name": "userArray",
"type": {
"type": "array",
"items": {
"name": "User",
"type": "record",
"fields" : [ .... ]
}
}
]
}
Doug
On 03/21/2011 09:43 AM, Curtis Jensen wrote:
> Great. However, how to use it?
> I've modified my schema to look like below:
>
> In java, when I try to parse this schema with:
> Schema usersSchema = Schema.parse(USERS_SCHEMA);
>
> I get an "org.apache.avro.SchemaParseException: No type" exception
> (Here USERS_SCHEMA is the schema below).
>
>
> {
> "name": "Users",
> "type": {
> "type": "array",
> "items": {
> "name": "User",
> "type": "record",
> "fields" : [
> {"name": "name", "type": "string"},
> {"name": "id", "type": "long"}
> ]
> }
> }
> }
>
> On Mon, Mar 21, 2011 at 8:42 AM, David Rosenstrauch <[email protected]> wrote:
>> On 03/21/2011 11:28 AM, Curtis Jensen wrote:
>>>
>>> How does one create a schema for an array of records?
>>>
>>> For example, I have a record schema for a user (name and id; see
>>> below). I would like to serialize an array of users. I've tried
>>> various combinations of things, and I'm not getting it to work.
>>>
>>> Thanks,
>>> Curtis
>>>
>>>
>>> [
>>> {
>>> "name": "User",
>>> "type": "record",
>>> "fields": [
>>> {"name": "name", "type": "string"},
>>> {"name": "id", "type": "int"}]
>>> },
>>> {
>>> "type": "array", "items": "User"
>>> }
>>> ]}
>>
>>
>> We do it like so:
>>
>> "name": "AttributeMappings",
>> "type": {
>> "type": "array",
>> "items": {
>> "name": "AttributeMapping",
>> "type": "record",
>> "fields" : [
>> {"name": "Key", "type": "long"},
>> {"name": "Value", "type": "long"}
>> ]
>> }
>> }
>>
>> HTH,
>>
>> DR
>>