Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

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


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
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB