Cassandra,优化in子句

时间:2018-10-02 21:29:32

标签: hash cassandra partitioning murmurhash

我正在考虑一种优化像(1,2,3,....)中的id这样的子句的方法吗?

  • 获取Murmur3Partitioner哈希函数
  • 将子句中的值按会导致相同散列的值进行分组,例如“ id in(x1,x3,...)”,其中x1和x3具有相同的散列。
  • 将该查询传递给驱动程序,驱动程序应该能够转到分区所有者节点吗?

那么,如何获得Cassandra的Murmur3Partitioner哈希函数,以便可以在代码中计算哈希?

该理论是否可以与Cassandra一起使用?

1 个答案:

答案 0 :(得分:2)

如果使用token aware load balancing policy,驱动程序已经可以执行此操作。值得一提的是,尽管它们可能是相同的协调者,但您将有多个具有相同令牌的ID。

通常,尝试像这样批量处理请求是一个坏主意。除非您有不同寻常的场景,否则最好对每个id使用executeAsync并对其进行获取。它将更好地在整个集群中分配和并行化协调负载,并且需要更少的自定义工作。我强烈建议不要过早优化,而应该专注于拥有正确的数据模型。如果您需要分批工作,请使用Spark Loader / Reader或查看它作为有效完成工作的一个很好的例子。