2013-04-09 80 views
1

我正在使用Cassandra數據庫。我創建了一個有10列的列族。從Cassandra數據庫獲取指定列數據不是所有列數據

現在我只想檢索我需要的列。我不需要從Cassandra數據庫中檢索所有列值。

假設如果我的列族users以下有列。

colA 
colB 
colC 
colD 

而且我只需要從Cassandra數據庫獲取colA and colB數據。那麼我應該怎麼做?我不想從Cassandra獲取所有列數據,然後循環獲取所需的列。

東西喜歡 -

SELECT colA, colB from table1;

我與Pelops client工作。

以下是我的代碼。

public void readTest() { 
     // read back the data we just wrote 
     Selector selector = Pelops.createSelector(poolName); 
     List<Column> columns = selector.getColumnsFromRow(colFamilyName, rowKey, false, ConsistencyLevel.ONE); 

     System.out.println("Name: " + Selector.getColumnStringValue(columns, "name")); 
     System.out.println("Age: " + Selector.getColumnValue(columns, "age").toInt()); 

    } 

回答

2

您需要使用getColumnsFromRow調用,它需要一個「SlicePredicate」指定的列名。 如:

getColumnsFromRow(String columnFamily, Bytes rowKey, SlicePredicate colPredicate, ConsistencyLevel cLevel) 
+0

感謝Zanson的建議。但是在上面的語法中,我找不到應該在哪裏指定要檢索的列名稱?你能提供一個簡單的例子嗎?謝謝您的幫助。 – ferhan 2013-04-09 22:49:48

+2

在colPredicate中。例如 SlicePredicate myPredicate = Selector.newColumnsPredicate(「mycol1」,「mycol2」); – 2013-04-10 06:40:22