On 06/04/2012 09:00 PM, Jon Bender wrote:
At the moment I'm trying to use the following Avro schema:
http://pastebin.com/SXKZ0KAR

When I try to parse the schema,  it's throwing an error because of the
duplicate record name "configData" (Error: can't redefine: "configData")
contained in multiple different records.  As you can see these names are
nested inside of other fields/records, so I wasn't expecting there to be
a collision of the record names defined at different levels.

Record names are not defined in a nested, lexical scope, but rather dynamically during the parsing. Once a name is defined it persists through the rest of parsing process. This permits one to define a record the first time it's used, then refer to it by name in subsequent uses.

I am constructing this overall Avro schema from a number of smaller
schemas ("FOO", "BAR" being examples) which are map types and need to be
nullable, which is why I tried to define them as union ["null", {type:
map }].

Is there any way to preserve the original names of the records (eg.
configData) in this particular design, or do I need to redefine the
record names of each individual object to avoid collisions?

It's not entirely clear to me what you're trying to model, but Avro won't let you use the same record namespace+name for two different things within a single schema. Sorry!

Doug

Reply via email to