On 08/25/2010 09:27 AM, Jeff Zhang wrote:
Since the purpose of named type is to allow it to be reference in
other types, and Record, enums and fixed are named types, so why Array
and map is not named type ? What's the design consideration ? I think
if array and map is named type, I can create more complex data type.
Arrays and maps are not named types because the corresponding data
structures in most programming languages are not named types.
Any datatype can be named by wrapping it in a single-field record. This
adds nothing to its serialized size, since records and fields have no
overheads. So if you wish to reuse a particular array or map type, you
can use something like:
{"type":"record", "name":"my.ArrayOfInt", "fields": [
{"name":"values", "type": {"type:"array", "items":"int"}}
]}
Note that, in release 1.4.0, Avro IDL will support file includes,
simplifying schema reuse.
https://issues.apache.org/jira/browse/AVRO-495
Doug