首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

关于cassandra0.7.5的操作,该如何解决

2012-03-09 
关于cassandra0.7.5的操作import java.nio.ByteBufferimport org.apache.cassandra.thrift.Cassandraimp

关于cassandra0.7.5的操作
 


import java.nio.ByteBuffer;

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 Exception {  
  /* 初始化连接 */  
  init();  
   
   
  /* 选择需要操作的Keyspaces, 可以理解成数据库的表 */  
  String keyspace= "test";  
  String row = "hh";  
   
  /* 创建一个Table Name */  
  String tableName = "table1";  
   
  /* 插入一条记录 */  
// 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 " + ":" +column.name);  
  System.out.println("column value" + ":" + column.value);  
  System.out.println("column timestamp" + ":" + (column.timestamp));  
   
  close();  
  }  
   
  /**  
  * 获取数据  
  */  
  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  
  */  
  return cassandraClient.get(ByteBuffer.wrap(col.getColumn()),col, ConsistencyLevel.ONE).getColumn();
  }  
   
   
  /**  
  * 关闭当前的远程访问连接  
  */  
  public static void close() {  
  socket.close();  
  }  
 }  


出现异常

Exception in thread "Main Thread" org.apache.thrift.transport.TTransportException
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204)
at org.apache.cassandra.thrift.Cassandra$Client.recv_get(Cassandra.java:479)
at org.apache.cassandra.thrift.Cassandra$Client.get(Cassandra.java:462)
at SampleOne.getByColumn(SampleOne.java:129)
at SampleOne.main(SampleOne.java:63)


[解决办法]
这个不会啊,呵呵

热点排行