1

get_range_slices在随机分区器的情况下也遍历所有键。据我了解,此查询的结果不会返回重复的键,因为它会在环上上升。由于键是散列的,Cassandra 需要额外的“索引”才能执行这样的查询——就像每个键都需要保留对下一个键的引用(情况并非如此)。

有人可以给我一些关于 Cassandra 如何在随机分区器的情况下实现对所有键的迭代的提示吗?

4

2 回答 2

2

结果以随机顺序返回。或者更具体地说,令牌顺序(键的散列值)。

于 2012-10-17T16:19:54.937 回答
0

编辑:我不确定我是否理解原来的问题,就好像你有 100 个节点,你永远不会从一个节点上运行 get_range_slices。通常,您将使用 cassandra 的适配器在 cassandra 之上安装 hadoop map/reduce,以便您可以并行处理所有密钥。

get_range_slices 通常从不用于获取随机分区器上的“所有”键。相反,使用 map/reduce 是因为将二进制代码发送到每台机器的速度要快得多,并且每台机器并行执行,因此您可以更快地遍历整个数据集。

IE。也许您需要查看 map/reduce 而不是 get_range_slices?

如果您使用 PlayOrm,另一个选项是 PlayOrm 的分区,因为您可以使用 Storm,并且可以让机器处理每个分区。你可以做一个

 PARTITIONS(:partitionId) SELECT * FROM Table

获取分区的所有行。

当然,您也可以进行连接等操作,并且它们在并行读取多个磁盘并处理磁盘时速度很快,您希望并行操作可以加快速度。

于 2012-10-18T13:31:42.937 回答