2013-02-22 61 views
5

我使用此代碼獲取USER_ID & user_code隨機列取中卡桑德拉

Keyspace keyspace = HFactory.createKeyspace("test", cluster); 
CqlQuery<String,String,ByteBuffer> cqlQuery = new CqlQuery<String,String,ByteBuffer>(keyspace, stringSerializer, stringSerializer, new ByteBufferSerializer()); 
cqlQuery.setQuery("select user_id,user_code from User"); 
QueryResult<CqlRows<String,String,ByteBuffer>> result = cqlQuery.execute(); 
Iterator iterator = result.get().iterator(); 
while(iterator.hasNext()) { 
    Row<String, String, ByteBuffer> row = (Row<String, String, ByteBuffer>) iterator.next(); 
    System.out.println("\nInserted data is as follows:\n" + row.getColumnSlice().getColumns().get(0).getValue().getInt()); 
    System.out.println("\nInserted data is as follows:\n" + Charset.forName("UTF-8").decode(row.getColumnSlice().getColumns().get(1).getValueBytes())); 
} 

現在問題就出在這裏,我根據自己的具體類型

如果什麼查詢會隨機變換等領域?如何處理這種情況?

+0

Plz嘗試使用不同的BufferSerialezer而不是ByteBufferSerializer,通過這個u將始終獲取字節流中的所有數據,嘗試從數據庫中提取數據以其存儲的實際格式。 – 2013-02-22 12:10:50

回答

1

CQL查詢返回包含它們所包含的列的元數據,類似於JDBC結果集。

我不知道Hector是否或如何暴露此信息。對於CQL,更好的選擇將是這裏新的純CQL驅動程序:https://github.com/datastax/java-driver

+0

你是如何得到它的工作?看看[我的要點](https://gist.github.com/shehaaz/5279566)...這是一個Cassandra集羣會話...剛剛稱爲新的Cassandra();不努力......是否需要與港口?爲什麼我不能將它設置爲localhost:9160 ....在ProtocolOptions中,DEFAULT_PORT設置爲9042 ...爲什麼是這樣?謝謝! :) – Shehaaz 2013-03-31 04:56:57