Cassandra - 在随机分区器上迭代所有行键而不重复

时间:2012-10-17 07:47:40

标签: cassandra

在随机分区器的情况下,

get_range_slices遍历所有键。据我所知,这个查询的结果不会返回重复的密钥,因为它会在环上升。由于密钥是经过哈希处理的,因此Cassandra需要额外的“索引”才能执行此类查询 - 就像每个密钥需要保留对下一个密钥的引用(事实并非如此)。

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

2 个答案:

答案 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

获取分区的所有行。

你当然可以进行连接等等,并且它们很快,因为它们并行读取多个磁盘并处理磁盘,你希望这种并行操作能够加快速度。