2013-02-06 52 views
3

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

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

回答

2

使用Hadoop MapReduce将是正确的方式来做到这一点,但我知道这不是一个可行的选项,你现在。所以,你有几个可能的原因:

  1. 如果你的钥匙有一定的逻辑顺序,可以计算的或者事先另有知道,你可以做一个批处理一串钥匙的多搞定。

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

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