Jeremy and Aaron,
Thanks for your help.

I had already installed Thrift on my Snow Leopard so I thought running  *thrift
-gen cassandra.thrift* file would work. However as the wiki suggests it
appears only a specific version of Thrift work with a particular Cassandra
version. So I checked out the matching version of Thrift. Even after getting
the exact version of Thrift though, getting it to work wasn't straight
forward and in fact its still throwing errors.

Aaron's suggestions of using the ant task (*ant gen-thrift-py*) seemed much
smoother but then that task does not generate the python thrift module, it
only generates the cassandra module.

So I used a mix and match of both methods and finally have both the thrift
and the cassandra modules. However, it now seems there is a mismatch in the
API. I ran the python example from
http://wiki.apache.org/cassandra/ThriftExamples#Python and ended up with the
following errors:

Traceback (most recent call last):
  File "cassandra_client.py", line 52, in <module>
    main()
  File "cassandra_client.py", line 35, in main
    ConsistencyLevel.ZERO)
TypeError: insert() takes exactly 5 arguments (7 given)

------
Line 35 of cassandra_client.py is the same as line 35 of the python example
on the Cassandra wiki Thrift Examples page. Its the line in bold in the code
snippet below:

    try:
        transport.open()
        #Insert the data into Keyspace 1
        *client.insert(keyspace,*
*                      key,*
*                      column_path,*
*                      value,*
*                      timestamp,*
*                      ConsistencyLevel.ZERO)*
        #Query for data
        column_parent = ColumnParent(column_family="Standard1")
        slice_range = SliceRange(start="", finish="")
        predicate = SlicePredicate(slice_range=slice_range)
        result = client.get_slice(keyspace,
                                  key,
                                  column_parent,
                                  predicate,
                                  ConsistencyLevel.ONE)
        pp.pprint(result)
    except Thrift.TException, tx:
        print 'Thrift: %s' % tx.message
    finally:

Can somebody please help and make sense of this. Isn't there a more simple
and straightforward way getting Thrift to work with Cassandra? If not, why
not?

Thanks, Shashank


On Wed, Sep 22, 2010 at 1:16 PM, Aaron Morton <aa...@thelastpickle.com>wrote:

> I normally get the source download, then run ant gen-thrift-py
>
> Is there a reason you want to build it manually?
>
> Aaron
>
>
> On 22 Sep, 2010,at 07:35 PM, Shashank Tiwari <tsha...@gmail.com> wrote:
>
> I installed thrift successfully on Snow Leaopard. However, when I run
> *thrift -gen java interface/cassandra.thrift* with Cassandra 0.6.5, I get
> an error which reads as follows:
> ....apache-cassandra-0.6.5/interface/cassandra.thrift:303] error:
> identifier ONE is unqualified!
> Line 303 of cassandra.thrift is highlighted in the text below:
>
> 296   /**
> 297     Get the Column or SuperColumn at the given column_path. If no value
> is present, NotFoundException is thrown    . (This is
> 298     the only method that can throw an exception under non-failure
> conditions)
> 299    */
> 300   ColumnOrSuperColumn get(1:required string keyspace,
> 301                           2:required string key,
> 302                           3:required ColumnPath column_path,
> *303                           4:required ConsistencyLevel
> consistency_level=ONE)*
> 304                       throws (1:InvalidRequestException ire,
> 2:NotFoundException nfe, 3:UnavailableException ue    , 4:TimedOutException
> te),
> 305
>
> Could somebody please help resolve this problem and also explain what's
> going on here.
>
> Thanks, Shashank
>
>

Reply via email to