Cassandra RandomPartitioner和"全表扫描"

时间:2013-02-06 13:21:40

标签: cassandra

我似乎无法找到有关如何使用RandomPartitioner分割键来遍历列族中的所有行的信息。我看到列出的完整扫描的常用方法是“使用MapReduce”(这将是一个选项,但现在不是)并创建一个范围切片查询以批量检索行,用最后一个更新范围的下限每批后看到的关键。当你不能保证钥匙的订购时,这似乎是一种奇怪的方法,所以我想知道在这种情况下接受的做法是什么。

要明确的是,这整个列族遍历事件不是经常发生的,并且不是我们对数据库的标准访问模式的一部分。它不需要特别快(虽然它很好,当然!)我们只需要偶尔做它来检查垃圾等。我们不希望返回的行是一致的快照或类似的东西。

1 个答案:

答案 0 :(得分:2)

使用Hadoop MapReduce将是正确的方式,但我知道这对你来说不是一个可行的选择。所以你有几种可能性:

  1. 如果你的钥匙有一些逻辑顺序,并且可以提前计算或以其他方式知道,你可以批量多次获得一堆钥匙。

  2. 您可以创建一个类似于Cassandra的ColumnFamilyInputFormat工作方式的范围客户端。

  3. 您可以在另一个库中执行范围切片using Hector like this或某些类似的构造。