On 12/07/2010 03:06 AM, Xingen Wang wrote:
I just want my rpc framework be able to transport any objects through
network without any modification in the existing schema definition.
Can I achieve this objective with Avro
Perhaps. A way to do this is to define a general schema. If, for
example, your objects were named records whose named fields could be
null, boolean, long, double, string or a nested record value, then your
schema might be something like:
{"name":"data", "type":"record", "fields":[
{"name":"value", "type":
["null",
"boolean",
"long",
"double"
"string",
{"name":"record", "type":"record", "fields":[
{"name":"fields", "type":
{"type":"array", "items":
{"name":"field", "type":"record", "fields":[
{"name":"name", "type":"string"},
{"name":"value", "type":"data"}
]}
}
}]}
]}
Note that this is almost a schema for the JSON data model.
Doug
On Tue, Dec 7, 2010 at 9:12 AM, Jeff Hammerbacher <[email protected]
<mailto:[email protected]>> wrote:
Hey Xingen,
1. Does the json schema support extends? e.g. First, I define an
general-purpose json schema named "Object", and in other json
schema, try to extends this "Object".
Avro IDL supports includes:
http://avro.apache.org/docs/current/idl.html#imports. It does not
support extensions, to the best of my knowledge. Perhaps you could
file a feature request at https://issues.apache.org/jira/browse/AVRO?
2. In the primitive types, I can't find one type that can
represent any objects. I tried "record", but you have to specify
"name" and "fields" for it.
You could make a union of all of the primitive types? I'm not sure
exactly what you're trying to accomplish with this question though.
Thanks,
Jeff
--
Xingen Wang