cassandra基于thrift的java客户端测试
需要apache-cassandra-2.0.3.jar
apache-cassandra-thrift-2.0.3.jar
libthrift-0.9.1.jar
log4j。。。
slf4j。。。
安装完cassandra2.0.3后可以从lib目录下获得上述lib
为了远程访问,
1.关闭linux防火墙,
2.修改thrift的地址即(rpc_address),在cassandra.yaml里
#rpc_address: localhost
rpc_address:192.168.53.233
****************************************************
package dbtest;
import java.util.List;
import java.util.Random;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.TException;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.service.*;
import org.apache.cassandra.thrift.*;
public class Cassandralient
{
public
static void main(String[] args)
throws
TException, InvalidRequestException, UnavailableException,
UnsupportedEncodingException, NotFoundException
{
TTransport tr = new TFramedTransport(new TSocket("localhost",
9160));
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
tr.open();
//keyspace相当于数据库,需要手动创建
String keyspace = "Keyspace1";
client.set_keyspace(keyspace);
//columnfamily
name, 就是数据库的table,需要手动创建
String
columnFamily = "Standard1";
//row
key
String key_user_id = "1";
// insert data
long timestamp = System.currentTimeMillis();
Random r = new Random(timestamp);
Column nameColumn = new
Column(ByteBuffer.wrap("name".getBytes()));
nameColumn.setValue(Long.toHexString(r.nextLong()).getBytes());
nameColumn.setTimestamp(timestamp);
Column ageColumn = new
Column(ByteBuffer.wrap("age".getBytes()));
ageColumn.setValue(Long.toHexString(r.nextLong()).getBytes());
ageColumn.setTimestamp(timestamp);
ColumnParent columnParent = new ColumnParent(columnFamily);
client.insert(ByteBuffer.wrap(key_user_id.getBytes()),
columnParent,nameColumn,ConsistencyLevel.ALL) ;
client.insert(ByteBuffer.wrap(key_user_id.getBytes()),
columnParent,ageColumn,ConsistencyLevel.ALL);
//Gets column by key
SlicePredicate predicate = new SlicePredicate();
predicate.setSlice_range(new SliceRange(ByteBuffer.wrap(new
byte[0]), ByteBuffer.wrap(new byte[0]), false, 100));
List columnsByKey =
client.get_slice(ByteBuffer.wrap(key_user_id.getBytes()),
columnParent, predicate, ConsistencyLevel.ALL);
System.out.println(columnsByKey);
//Get all keys
KeyRange keyRange = new KeyRange(100);
keyRange.setStart_key(new byte[0]);
keyRange.setEnd_key(new byte[0]);
List keySlices = client.get_range_slices(columnParent, predicate,
keyRange, ConsistencyLevel.ONE);
System.out.println(keySlices.size());
System.out.println(keySlices);
for (KeySlice ks : keySlices) {
System.out.println(new String(ks.getKey()));
}
tr.close();
}
}