hi:
   I am now use cassandra 0.8.4, when i use java, i can insert and get my 
value,but c++ insert and get all not success. i compare the cassandra logs,find 
it success,but the client raise a exception.  do you have any c++ cassandra  
client demo? great thanks! 
 
DEBUG 15:08:21,757 Command/ConsistencyLevel is 
SliceByNamesReadCommand(table='nm_example', key=30, 
columnParent='QueryPath(columnFamilyName='nm_cfamily', superColumnName='null', 
columnName='null')', columns=[636f6c756d6e5f6e616d65,])/ONE
DEBUG 15:08:21,758 Blockfor/repair is 1/true; setting up requests to 
localhost/127.0.0.1
DEBUG 15:08:21,758 reading data locally
DEBUG 15:08:21,758 LocalReadRunnable reading 
SliceByNamesReadCommand(table='nm_example', key=30, 
columnParent='QueryPath(columnFamilyName='nm_cfamily', superColumnName='null', 
columnName='null')', columns=[636f6c756d6e5f6e616d65,])
DEBUG 15:08:21,759 Read: 1 ms.
DEBUG 15:08:21,760 logged out: #<User allow_all groups=[]>
 
my program:
 
#include "Cassandra.h"
#include <protocol/TBinaryProtocol.h>
#include <thrift/transport/TSocket.h>
#include <thrift/transport/TTransportUtils.h>
#include <iostream>
using namespace std;
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace org::apache::cassandra;
using namespace boost;
static string host("127.0.0.1");
static int port= 9160;
int64_t getTS(){
/* If you're doing things quickly, you may want to make use of tv_usec
* or something here instead
*/
time_t ltime;
ltime=time(NULL);
return (int64_t)ltime;
}
int main(){
shared_ptr<TSocket> socket(new TSocket(host, port));
shared_ptr<TFramedTransport> transport(new TFramedTransport(socket));
shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
CassandraClient client(protocol);
const string& key="your_key";
ColumnPath cpath;
ColumnParent cp;
ColumnOrSuperColumn csc;
Column c;
c.name.assign("column_name");
c.value.assign("Data for our key to go into column_name");
c.timestamp = getTS();
c.ttl = 300;
cp.column_family.assign("nm_cfamily");
cp.super_column.assign("");
cpath.column_family.assign("nm_cfamily");
/* This is required - thrift 'feature' */
cpath.__isset.column = true;
cpath.column="column_name";
 
try {
transport->open();
cout << "Set keyspace to 'nm_example'.." << endl;
client.set_keyspace("nm_example");
//cout << "Insert key '" << key << "' in column '" << c.name << "' in column 
family '" << cp.column_family<<"column value "<<c.value << "' with timestamp " 
<< c.timestamp << "..." << endl;
//client.insert(key, cp, c, org::apache::cassandra::ConsistencyLevel::ONE);
cout << "Retrieve key '" << key << "' from column '" << cpath.column << "' in 
column family '" << cpath.column_family << "' again..." << endl;
client.get(csc, "0", cpath, org::apache::cassandra::ConsistencyLevel::ONE);
cout << "Value read is '" << csc.column.value << "'..." << endl;
c.timestamp++;
c.value.assign("Updated data going into column_name");
cout << "Update key '" << key << "' in column with timestamp " << c.timestamp 
<< "..." << endl;
client.insert(key, cp, c, org::apache::cassandra::ConsistencyLevel::ONE);
cout << "Retrieve updated key '" << key << "' from column '" << cpath.column << 
"' in column family '" << cpath.column_family << "' again..." << endl;
client.get(csc, key, cpath, org::apache::cassandra::ConsistencyLevel::ONE);
cout << "Updated value is: '" << csc.column.value << "'" << endl;
cout << "Remove the key '" << key << "' we just retrieved. Value '" << 
csc.column.value << "' timestamp " << csc.column.timestamp << " ..." << endl;
client.remove(key, cpath, csc.column.timestamp, 
org::apache::cassandra::ConsistencyLevel::ONE);
transport->close();
}
catch (NotFoundException &nf){
cerr << "NotFoundException ERROR: "<< nf.what() << endl;
}
catch (InvalidRequestException &re) {
cerr << "InvalidRequest ERROR: " << re.why << endl;
}
catch (TException &tx) {
cerr << "TException ERROR: " << tx.what() << endl;
}
return 0;
}
 
result:
[root@chunkservers3 cpp-test]# ./cpptest
Set keyspace to 'nm_example'..
Retrieve key 'your_key' from column 'column_name' in column family 'nm_cfamily' 
again...
NotFoundException ERROR: Default TException.
[root@chunkservers3 cpp-test]#

 

 
 

Reply via email to