Tuesday, 7 May 2013

Cassandra:Write data into table using Thrift API

Lets take an example, we have a following file :

$ cat test
row-1 colfam1 quan1 val1
row-2 colfam1 quan2 val2


Now , we have a table(columnfamily) in Cassandra "hbtable" in "mykeyspace' ,in which we have to load the data from this file . We have four columns in this table  (rowkey , cf , quantifier,value) with data type varchar .

Following is example of loading data in to this table using Cassandra Thrift API:

public class SimpleWriteThrift {
private static final String UTF8 = "UTF8";
private static final String HOST = "192.168.1.11";
private static final int PORT = 9160;
private static final ConsistencyLevel CL = ConsistencyLevel.ALL;
private static final String FILEPATH="/home/user/test";


public static void main(String[] args) throws InvalidRequestException, TException, UnavailableException, TimedOutException, IOException {
TTransport tr = new TSocket(HOST,PORT);
TFramedTransport tf = new TFramedTransport(tr);
TProtocol proto = new TBinaryProtocol(tf);
Cassandra.Client client = new Cassandra.Client(proto);
tf.open();

client.set_keyspace("mykeyspace");
String cfName= "hbtable";
long timestamp =System.currentTimeMillis();
ColumnParent cp = new ColumnParent(cfName);
BufferedReader br = new BufferedReader(new FileReader(FILEPATH));

String line;
Column c = new Column();
while ( (line=br.readLine())!=null)
{
String [] columns=line.split("\\s");

ByteBuffer userIDKey=ByteBuffer.wrap(columns[0].getBytes());
c.setName("cf".getBytes());
c.setValue(columns[1].getBytes());
c.setTimestamp(timestamp);
client.insert(userIDKey, cp,c, CL);
c.setName("quantifier".getBytes());
c.setValue(columns[2].getBytes());
c.setTimestamp(timestamp);
client.insert(userIDKey, cp,c, CL);
c.setName("value".getBytes());
c.setValue(columns[3].getBytes());
c.setTimestamp(timestamp);
client.insert(userIDKey, cp,c, CL);
}

tf.close();
System.out.println("Data inserted");


Lets check it now in Cassandra :

cqlsh:mykeyspace>select * from hbtable;
rowkey | cf | quantifier | value
--------+---------+------------+-------
row-2 | colfam1 | quan2 | val2
row-1 | colfam1 | quan1 | val1

No comments:

Post a Comment