Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
Avro >> mail # user >> Transform a single .avdl or .avpr into one or many .avsc


+
Bertrand Dechoux 2013-05-17, 12:46
+
Jeremy Kahn 2013-05-17, 14:10
+
Doug Cutting 2013-05-17, 19:11
Copy link to this message
-
Re: Transform a single .avdl or .avpr into one or many .avsc
After browsing the (nice) API, it seems indeed trivial.

The Idl class allows to read/parse the related file.
http://avro.apache.org/docs/current/api/java/org/apache/avro/compiler/idl/Idl.html#Idl%28java.io.File%29

The Protocol object can then be requested from it.
http://avro.apache.org/docs/current/api/java/org/apache/avro/compiler/idl/Idl.html#ProtocolDeclaration%28%29

Of course, the types can then be requested from the Protocol itself.
http://avro.apache.org/docs/current/api/java/org/apache/avro/Protocol.html#getTypes%28%29

And then it is only a matter of serializing them. And actually the API
provides even a 'pretty' option.
http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html#toString%28boolean%29

I will definitely look at it (ie with javac). Contributing it as a tool
would be nice. But I won't go into the maven land.

Regards

Bertrand
On Fri, May 17, 2013 at 9:11 PM, Doug Cutting <[EMAIL PROTECTED]> wrote:

> There's not a tool that does this currently.  Note however that
> existing tools will generate Java classes for each type in an IDL
> file, so if you're only using Java then you might not need a .avsc
> file for each type in the IDL.
>
> It would not be hard to add a tool (or an option to an existing tool)
> that wrote a .avsc file for each type in an .avdl file.  One could
> also add Maven support for this.  If this is of interest, please file
> an issue in Jira.
>
> https://issues.apache.org/jira/browse/AVRO
>
> If you're willing and able, please provide an implementation.
> Otherwise hopefully someone else will help out.
>
> Cheers,
>
> Doug
>
> On Fri, May 17, 2013 at 7:10 AM, Jeremy Kahn <[EMAIL PROTECTED]> wrote:
> > The "types" field in a protocol (.avro) may get you what you need. The
> > corresponding schema objects should be able to render to well-formed avsc
> > objects.
> >
> > On May 17, 2013 5:47 AM, "Bertrand Dechoux" <[EMAIL PROTECTED]> wrote:
> >>
> >> Hi,
> >>
> >> I have lots of avro schemas and most of them are about complex objects
> (ie
> >> nested definition of stuff). The syntax of avro idl is attractive in
> order
> >> to build something more readable and thus maintainable. However, it
> looks
> >> like I can't generate any avsc from a avdl (or the avpr generated from
> the
> >> avdl). I understand what is a protocol and I don't need one but the idl
> >> syntax is really attractive. Is there really no way to use it for that
> >> purpose?
> >>
> >> Regards
> >>
> >> Bertrand
> >>
> >>
> >> PS : I remember seeing a discussion about that subject but I can't find
> >> it.
>

--
Bertrand Dechoux
+
Bertrand Dechoux 2013-05-21, 21:44
+
Bertrand Dechoux 2013-06-18, 22:05