Still in latest version of Cassandra (1.2.6) this feature is not available. This feature is planned in next version Cassandra 1.2.7. However patch is already available for this feature, with a few efforts we can make a try.
First we have to download the source code of the Cassandra from the branch 1.2. Also we should have a configured Hadoop cluster with Pig.
1) Download the Cassandra source code from branch 1.2
git clone -b cassandra-1.2 http://git-wip-us.apache.org/repos/asf/cassandra.gitassume that we already familiar with git.
and also apply the patch fix_where_clause.patch
Now compile the source code and setup the cluster. For testing purpose i am using my single node Hadoop 1.1.2 + Cassandra 1.2.7 + Pig 0.11.1 cluster.
2) To setup single node cluster please see here A single node Hadoop + Cassandra + Pig setup
3) Create a CF as follows:
CREATE TABLE test ( id text PRIMARY KEY, title text, age int );and insert some dummy data
insert into test (id, title, age) values('1', 'child', 21); insert into test (id, title, age) values('2', 'support', 21); insert into test (id, title, age) values('3', 'manager', 31); insert into test (id, title, age) values('4', 'QA', 41); insert into test (id, title, age) values('5', 'QA', 30); insert into test (id, title, age) values('6', 'QA', 30);4) Execute the following pig script
rows = LOAD 'cql://keyspace1/test?page_size=1&columns=title,age&split_size=4&where_clause=age%3D30' USING CqlStorage(); dump rows;you should get following result on pig console
((id,5),(age,30),(title,QA)) ((id,6),(age,30),(title,QA))Lets check the Hadoop job history page
With this new feature we can use where clause to select our desired data from Cassandra storage. You can also check the jira issue tracker to drill down much more.
All the credits goes for the Alex Lui, who implemented this feature.