2013-03-14 87 views
1

是否有可能通過用戶定義的查詢的hector API在cassandra中實現分頁?通過hector API在cassandra中尋呼用戶定義的查詢

如果是,如何?

+0

你所要求似乎很可能,也許用戶定義的查詢的一些例子可以幫助我們在提供解決方案 – abhi 2013-03-14 13:01:06

+0

@abhijit SELECT * FROM <列族><分頁邏輯> – 2013-03-14 13:53:43

回答

0

我已經添加了一個基本的方法,其餘的東西你必須處理。在這裏,你可以看到我們已經將頁面大小定義爲100行,每行有10列。現在在第一次迭代之後,你必須存儲一些如何存儲最後的鍵值,這將是迭代的起點。

int row_count = 100; 

    RangeSlicesQuery<UUID, String, Long> rangeSlicesQuery = HFactory 
     .createRangeSlicesQuery(keyspace, UUIDSerializer.get(), StringSerializer.get(), LongSerializer.get()) 
     .setColumnFamily("Column Family") 
     .setRange(null, null, false, 10) 
     .setRowCount(row_count); 

    UUID last_key = null; 

    while (true) { 
     rangeSlicesQuery.setKeys(last_key, null); 
     System.out.println(" > " + last_key); 

     QueryResult<OrderedRows<UUID, String, Long>> result = rangeSlicesQuery.execute(); 
     OrderedRows<UUID, String, Long> rows = result.get(); 
     Iterator<Row<UUID, String, Long>> rowsIterator = rows.iterator(); 

     if (last_key != null && rowsIterator != null) rowsIterator.next(); 

     while (rowsIterator.hasNext()) { 
      Row<UUID, String, Long> row = rowsIterator.next(); 
      last_key = row.getKey(); 

      if (row.getColumnSlice().getColumns().isEmpty()) { 
      continue; 
      } 

     } 

    } 
} 
+0

你沒有考慮採取我必須激發我自己的查詢,像select * from <分頁邏輯>,我無法在您的示例中看到 – 2013-03-15 05:20:32

+1

我沒有在示例中提及這些內容,因爲這些內容取決於where子句,無論是索引列上的<分頁邏輯>還是隻有鍵,您必須相應地選擇合適的分片器(RangeSlicesQuery,IndexedSlicesQuery,MultigetSliceQuery)。查看hectors示例https://github.com/zznate/hector-examples/tree/master/src/main/java/com/riptano/cassandra/hector/example – abhi 2013-03-15 05:44:25