get_range_slices
在随机分区器的情况下也遍历所有键。据我了解,此查询的结果不会返回重复的键,因为它会在环上上升。由于键是散列的,Cassandra 需要额外的“索引”才能执行这样的查询——就像每个键都需要保留对下一个键的引用(情况并非如此)。
有人可以给我一些关于 Cassandra 如何在随机分区器的情况下实现对所有键的迭代的提示吗?
get_range_slices
在随机分区器的情况下也遍历所有键。据我了解,此查询的结果不会返回重复的键,因为它会在环上上升。由于键是散列的,Cassandra 需要额外的“索引”才能执行这样的查询——就像每个键都需要保留对下一个键的引用(情况并非如此)。
有人可以给我一些关于 Cassandra 如何在随机分区器的情况下实现对所有键的迭代的提示吗?
结果以随机顺序返回。或者更具体地说,令牌顺序(键的散列值)。
编辑:我不确定我是否理解原来的问题,就好像你有 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
获取分区的所有行。
当然,您也可以进行连接等操作,并且它们在并行读取多个磁盘并处理磁盘时速度很快,您希望并行操作可以加快速度。