我正在使用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
是否正确?有没有官方文件证实这一点?
答案 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