Hash Cassandra上键的哈希值

Hash Cassandra上键的哈希值,hash,cassandra,key,hector,partitioner,Hash,Cassandra,Key,Hector,Partitioner,我正在用Hector为Cassandra开发一种机制。 此时我需要知道哪些是密钥的散列值,以查看存储的节点查看每个节点的令牌,并直接向该节点请求值。我所理解的是,根据Cassandra使用的分区器,值是独立于一个分区器存储到另一个分区器的。那么,所有键的散列值是否存储在任何表中?如果不是,我如何实现一个泛型类,一旦我从系统键空间读取了使用Cassandra的分区器,这个类就可以成为它的一个实例,而不需要根据分区器修改代码?我需要它调用getToken方法来计算给定密钥的哈希值。您可以重用Cass

我正在用Hector为Cassandra开发一种机制。
此时我需要知道哪些是密钥的散列值,以查看存储的节点查看每个节点的令牌,并直接向该节点请求值。我所理解的是,根据Cassandra使用的分区器,值是独立于一个分区器存储到另一个分区器的。那么,所有键的散列值是否存储在任何表中?如果不是,我如何实现一个泛型类,一旦我从系统键空间读取了使用Cassandra的分区器,这个类就可以成为它的一个实例,而不需要根据分区器修改代码?我需要它调用getToken方法来计算给定密钥的哈希值。

您可以重用Cassandra:中定义的分区器,然后使用令牌范围来进行路由。

Hector的CqlQuery支持不足且存在缺陷。您应该改用本机Java CQL驱动程序:

提供了现成的令牌感知路由。我将使用它,而不是试图在Hector中重新发明轮子,特别是因为Hector使用传统的Thrift API而不是。

最后,在测试了不同的实现之后,我找到了使用下一个代码获得分区器的方法:

            CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(
            ksp, StringSerializer.get(), StringSerializer.get(),   StringSerializer.get());
            cqlQuery.setQuery("select partitioner from local");
            QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();
            CqlRows rows = result.get();
            for (int i = 0; i < rows.getCount(); i++) {
                RowImpl<String, String, String> row = (RowImpl<String, String, String>) rows
                .getList().get(i);
                List<HColumn<String, String>> column = row.getColumnSlice().getColumns();
                for (HColumn<String , String> c: column) {
                    System.out.println(c.getValue());
            }

    } 

我不明白您想做什么-Cassandra使用分区器在内部处理所有哈希值。你想用它们做什么?对于那些看到这个和另一个来自jbellis的答案的人来说:这些重复出现是因为我将另一个问题合并到了这个问题中。对于那些看到这个和另一个来自jbellis的答案的人来说:这些重复出现是因为我将另一个问题合并到了这个问题中。