2012-04-11 33 views
7

我是cassandra和hector中的新成員。使用Hector客戶端檢索Cassandra中所有行的列

我想使用hector檢索Cassandra中所有行的所有列。 對網絡經過一番摸索我得到了一些示例代碼,但它需要的範圍或列名一樣,

SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss); 
    query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100); 
    QueryResult<ColumnSlice<String,String>> result = query.execute(); 
    for (HColumn<String, String> column : result.get().getColumns()) { 
     System.out.println(column.getName() +"::"+ column.getValue()); 
    } 

在這裏,我需要設置範圍在setRange()方法,獲取可在此範圍內的列。我們也可以在這個方法中設置開始和結束,但是這也會給出特定範圍的列。如果我不設置範圍,那麼我需要給列名作爲數組。

有什麼辦法可以獲得特定行的所有列? 我不想設置範圍或列名稱,我只想要一行的所有列。因爲在我的應用程序列中沒有預定義。

或者有什麼辦法可以得到一個行的總列數,所以我可以在setRange()方法中設置它?

謝謝。

回答

10

對於有點小的行來說,這樣做的方法是使用setRange()方法,確切地說,它是如何在您粘貼的示例中使用的。如果將範圍的開始和結束參數設置爲空,則從中提取的範圍是整行。

你需要考慮的唯一事情就是限制。在您粘貼的示例中,限制設置爲100,因此查詢不會返回超過100列。如果要始終檢索連續的所有列,則可以將限制設置爲非常大的數字(大於可能的列數),但這通常是一個好主意,但這不是而是

相反,您可能希望爲範圍查詢創建一個hector ColumnSliceIterator,它將爲該行提供一個迭代器接口,並允許您遍歷整行而不一次查詢太多列。參見本頁底部「列迭代」下的示例:

https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

相關問題