2012-08-23 40 views
0

卡桑德拉-节俭1.1.2.jarApache的节俭呼叫卡桑德拉插入在 “钥匙”

问题代码垃圾/空值:

 
      ColumnOrSuperColumn cosc = null; 
     org.apache.cassandra.thrift.Column c = new org.apache.cassandra.thrift.Column(); 
     c.setName ("full_name".getBytes ("UTF-8")); 
     c.setValue ("Test name".getBytes ("UTF-8")); 
     c.setTimestamp (System.currentTimeMillis()); 

     // insert data 
//  long timestamp = System.currentTimeMillis(); 

     try { 
      client.set_keyspace("CClient"); 

      bb=ByteBuffer.allocate (10); 
      client.insert (bb.putInt(1), 
          new ColumnParent ("users"), 
          c, 
          ConsistencyLevel.QUORUM); 
      bb.putInt (2); 
      cosc = client.get (bb, cp, ConsistencyLevel.QUORUM); 
     } 
     catch (TimedOutException toe) { 
      System.out.println (toe.getMessage()); 
     } 
     catch (org.apache.cassandra.thrift.UnavailableException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      System.out.println (new String (cosc.getColumn().getName()) + "-" + new String (cosc.getColumn().getValue())); 
     } 

上面显示的代码在数据库中插入了一些垃圾或null,我不明白为什么?

看看它是如何看起来对CLI:

 
RowKey: 
=> (column=full_name, value=Test name, timestamp=1345743985973) 

在任何帮助,这是极大的赞赏。

谢谢。

+2

我并不真正关注你的问题,但如果你使用像Hector这样的客户端库而不是使用原始的节俭,它会容易得多。 – sbridges

+1

@sbridges你应该让这个答案,因为这是正确的答案。 –

+0

我查找了Hector的源代码,以了解如何完成插入操作,并且ByteBufferUtil就是其中之一。 (1), 新的ColumnParent(“用户”), c, ConsistencyLevel.QUORUM); ' –

回答

0

您正在使用行键创建一行作为字节。 在Cassandra cli中,如果将行列为字节,您可能会看到行键。 例如在cassandra cli中输入:
假定用户密钥为字节;
列表用户;