get_range_slices
遍历所有键。据我所知,这个查询的结果不会返回重复的密钥,因为它会在环上升。由于密钥是经过哈希处理的,因此Cassandra需要额外的“索引”才能执行此类查询 - 就像每个密钥需要保留对下一个密钥的引用(事实并非如此)。
有人可以给我一些关于Cassandra如何在随机分区器中实现迭代所有键的提示吗?
答案 0 :(得分:2)
结果以随机顺序返回。或者更具体地说,令牌顺序(键的散列值)。
答案 1 :(得分:0)
编辑:我不确定我是否理解原始问题,好像你有100个节点,你永远不会从单个节点想要运行get_range_slices。通常,您可以使用cassandra的适配器在cassandra上安装hadoop map / reduce,以便您可以并行处理所有密钥。
get_range_slices一般不会用于获取随机分区器上的“全部”键。相反,使用map / reduce,因为将二进制代码发送到每台机器的速度要快得多,并且每台机器并行执行,这样您就可以更快地遍历整个数据集。
即。也许你需要查看map / reduce而不是get_range_slices?
另一个选项是PlayOrm的分区,如果你使用PlayOrm,因为你可以使用风暴,你可以让一台机器处理每个分区。你可以做一个
PARTITIONS(:partitionId) SELECT * FROM Table
获取分区的所有行。
你当然可以进行连接等等,并且它们很快,因为它们并行读取多个磁盘并处理磁盘,你希望这种并行操作能够加快速度。