九乡新闻网是一部内容开放、自由的互动网络百科全书客观、专业、权威的知识性百科全书
来源:百度文库 编辑:九乡新闻网 时间:2024/05/07 13:16:27
import org.apache.cassandra.thrift.Cassandra;import org.apache.cassandra.thrift.Column;import org.apache.cassandra.thrift.ColumnPath;import org.apache.cassandra.thrift.ConsistencyLevel;import org.apache.cassandra.thrift.InvalidRequestException;import org.apache.cassandra.thrift.NotFoundException;import org.apache.cassandra.thrift.TimedOutException;import org.apache.cassandra.thrift.UnavailableException;import org.apache.thrift.TException;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.transport.TSocket;import org.apache.thrift.transport.TTransport;import org.apache.thrift.transport.TTransportException;public class SampleOne {static Cassandra.Client cassandraClient;static TTransport socket;private static void init() throws TTransportException {String server = "192.168.1.129";// String server = "localhost";int port = 9160;/* 首先指定cassandra server的地址 */socket = new TSocket(server, port);System.out.println(" connected to " + server + ":" + port + ".");/* 指定通信协议为二进制流协议 */TBinaryProtocol binaryProtocol = new TBinaryProtocol(socket, false, false);cassandraClient = new Cassandra.Client(binaryProtocol);/* 建立通信连接 */socket.open();}public static void main(String[] args) throws TException, TimedOutException, InvalidRequestException, UnavailableException, NotFoundException {/* 初始化连接 */init();/* 选择需要操作的Keyspaces, 可以理解成数据库的表 */String keyspace= "Keyspace1";String row = "employee";/* 创建一个Table Name */String tableName = "Standard2";/* 插入一条记录 */insertOrUpdate(keyspace,tableName,row,"name","happy birthday!",System.currentTimeMillis());/* 删除一条记录 *///delete(keyspace,tableName,row,"name",System.currentTimeMillis());/* 获取一条记录 (由于插入和删除是同一条记录,有可能会检索不到哦!请大家主意!*/Column column = getByColumn(keyspace,tableName,row,"name", System.currentTimeMillis());System.out.println("read row " + row);System.out.println("column name " + ":" + new String(column.name));System.out.println("column value" + ":" + new String(column.value));System.out.println("column timestamp" + ":" + (column.timestamp));close();}/*** 插入记录*/public static void insertOrUpdate(String tableSpace,String tableName, String rowParam,String ColumnName,String ColumnValue,long timeStamp)throws TException, TimedOutException, InvalidRequestException, UnavailableException, NotFoundException{/* 选择需要操作的Keyspaces, 存放数据表所在的空间位置 */String keyspace= tableSpace;/* 数据所在的行标 */String row = rowParam;/* 创建一个column path */ColumnPath col = new ColumnPath(tableName);col.setColumn(ColumnName.getBytes());/* 执行插入操作,指定keysapce, row, col, 和数据内容, 后面两个参数一个是timestamp, 另外一个是consistency_level* timestamp是用来做数据一致性保证的, 而consistency_level是用来控制数据分布的策略,前者的理论依据是bigtable, 后者的理论依据是dynamo*/cassandraClient.insert(keyspace, row, col,"i don't know".getBytes(), System.currentTimeMillis(), ConsistencyLevel.ONE);}/*** 删除记录*/public static void delete(String tableSpace,String tableName, String rowParam,String ColumnName,long timeStamp)throws TException, TimedOutException, InvalidRequestException, UnavailableException, NotFoundException{/* 选择需要操作的Keyspaces, 存放数据表所在的空间位置 */String keyspace= tableSpace;/* 数据所在的行标 */String row = rowParam;/* 创建一个column path */ColumnPath col = new ColumnPath(tableName);col.setColumn(ColumnName.getBytes());/* 执行删除操作,指定keysapce, row, col, 后面两个参数一个是timestamp, 另外一个是consistency_level* timestamp是用来做数据一致性保证的, 而consistency_level是用来控制数据分布的策略,前者的理论依据是bigtable, 后者的理论依据是dynamo*/cassandraClient.remove(keyspace, row, col, System.currentTimeMillis(), ConsistencyLevel.ONE);}/*** 获取数据*/public static Column getByColumn(String tableSpace,String tableName, String rowParam,String ColumnName,long timeStamp)throws TException, TimedOutException, InvalidRequestException, UnavailableException, NotFoundException{/* 选择需要操作的Keyspaces, 存放数据表所在的空间位置 */String keyspace= tableSpace;/* 数据所在的行标 */String row = rowParam;/* 创建一个column path */ColumnPath col = new ColumnPath(tableName);col.setColumn(ColumnName.getBytes());/* 执行查询操作,指定keysapce, row, col, timestamp* timestamp是用来做数据一致性保证的, 而consistency_level是用来控制数据分布的策略,前者的理论依据是bigtable, 后者的理论依据是dynamo*/Column column = cassandraClient.get(keyspace, row, col, ConsistencyLevel.ONE).column;return column;}/***关闭当前的远程访问连接*/public static void close() {socket.close();}}
{ // 这是一个SuperColumnname: "李明杰",// 包含一系列的Columnsvalue: {street: {name: "street", value: "1234 x street", timestamp: 123456789},city: {name: "city", value: "san francisco", timestamp: 123456789},zip: {name: "zip", value: "94107", timestamp: 123456789},}}
{ // 这是一个columnname: "李明杰",value: "mydream.limj@gmali.com",timestamp: 123456789}