通过hector API为用户定义的查询在cassandra中进行分页

时间:2013-03-14 09:38:57

标签: java cassandra

是否可以通过hector API为用户定义的查询在cassandra中实现分页。

如果是,怎么样?

1 个答案:

答案 0 :(得分: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;
          }

        }

    }
}