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
Hive >> mail # dev >> perl code generated from thrift


Copy link to this message
-
Re: perl code generated from thrift
thanks Ed.  Something just isn't quite right.

in .$HOME/downloads/hive-0.9.0/src/metastore/if/hive_metastore.thrift
 there is a 'struct Schema' entry but all attempts to generate the perl
code for that seem to come up empty.

looking at -gen py and the associated code i see this code frag in
ThriftHive.py

        if ftype == TType.STRUCT:
          self.success = hive_metastore.ttypes.Schema()
          self.success.read(iprot)
        else:

for perl i only have this:

     if ($ftype == TType::STRUCT) {
        $self->{success} = new Schema();
        $xfer += $self->{success}->read($input);

and hence "new Schema" throws the exception of not found.
comparing to the generated python code -- it has a whole big ttype.py under
hive_metastore while the generated perl code has zilch. the perl stuff only
has ThriftHiveMetastore.pm but no subclasses. :(

thoughts, ideas, ruminations?

Thanks again Ed.

Cheers,
Stephen

On Tue, May 29, 2012 at 9:00 AM, Edward Capriolo <[EMAIL PROTECTED]>wrote:

> Hive uses thrift in two places 1) HiveServer 2)Metastore . Search in
> the metastore directory for the thrift interface file and compile
> that.
>
> Then you should get a class generated for hive_metastore.Schema
>
> Edward
>
>
>
> On Tue, May 29, 2012 at 11:46 AM, Stephen Sprague <[EMAIL PROTECTED]>
> wrote:
> > Hi Good People,
> > I am totally stumped on this one. Wondered if a "perl" bindings chap on
> > this list might be able to help me.
> >
> > I generated the ThrftHive.pm class as follows (see below) from my
> download
> > area.  I've tested some basic examples of querying - and it works well.
> >  The one thing that i can't get to work, though, is a call to
> > "$client->getSchema()" in order to ascertain the schema of a result set.
> >
> > * this built ThriftHIve.pm
> >
> > $ thrift -r \
> >   -I $HOME/downloads/hive-0.9.0/src/ql \
> >   -I $HOME/downloads/hive-0.9.0/src \
> >   -I $HOME/downloads/thrift-0.8.0 \
> > \
> >  -gen perl \
> > \
> >  $HOME/downloads/hive-0.9.0/src/service/if/hive_service.thrift
> >
> >
> >
> >
> > * in hive_service.thrift here are the relevant lines (that i can tell)
> >
> > #the includes
> >  include "contrib/fb303/if/fb303.thrift"
> >  include "metastore/if/hive_metastore.thrift"
> >  include "ql/if/queryplan.thrift"
> >  namespace java org.apache.hadoop.hive.service
> >  namespace cpp Apache.Hadoop.Hive
> >
> >  <snip>
> > #the getSchema() reference
> >   service ThriftHive extends hive_metastore.ThriftHiveMetastore {
> >   <snip>
> >     # Get a schema object with fields represented with native Hive types
> >     hive_metastore.Schema getSchema() throws(1:HiveServerException ex)
> >
> >
> > * the relevant line in ThriftHive.pm that throws an undefined method
> call:
> >
> > Undefined subroutine &ThriftHive_getSchema_result::Schema called at
> > /home/spragues/downloads/thrift-0.8.0/gen-perl/ThriftHive.pm line 672.
> >
> >        $self->{success} = new Schema();
> >        $xfer += $self->{success}->read($input);
> >
> >
> > Where 'o where is this "Schema" class supposed to be? Any pointers,
> clues,
> > suggestions, bread crumbs most welcome!
> >
> > Thanks
> > Stephen
>
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