Cassandra - 如何检索CF(随机分区程序)中的所有密钥

时间:2012-01-30 07:27:43

标签: nosql cassandra

我正在使用Random Partitioner(cassandra版本0.7.8),我想要检索CF中的所有密钥。我尝试使用get_range_slices来执行此操作,看起来我可以使用此方法获取密钥,但密钥不是有序的。

并且还有一篇帖子说:“任何分区器都允许使用0.6”(Fetching all keys using the Cassandra API -- analogy to "SELECT id FROM table;"),但是api文件说不可能(http://wiki.apache.org/cassandra/API#get_range_slices)。

我的问题是,在get_range_slices中使用Random Partitioner是否正确?有没有官方文件证实这一点?

2 个答案:

答案 0 :(得分:6)

是的,这是可能的。您引用的文档试图说,如果您有行键1..10,并且要求范围为5..8,则不会得到一组行[5,6,7,8]。

这是fetching all rows from a column family的文档。

基本上你使用get_range_slices,其start_key为空字符串,而不是end_key。根据count中指定的行数,这可能会返回少于列族中的所有行。在这种情况下,您使用上一个结果集中的最后一行键作为下一个查询的start_key。

答案 1 :(得分:2)

以下是使用Hector客户端(具有多个线程)在Java中执行此操作的示例: https://github.com/zznate/cassandra-tutorial/blob/master/src/main/java/com/datastax/tutorial/KeyIteratorExample.java