Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用cassandradb计数器表进行查询_Cassandra_Cassandra 2.0_Cql3 - Fatal编程技术网

如何使用cassandradb计数器表进行查询

如何使用cassandradb计数器表进行查询,cassandra,cassandra-2.0,cql3,Cassandra,Cassandra 2.0,Cql3,我在Cassandradb有一张表,如下所述: CREATE TABLE remaining (owner varchar,buddy varchar,remain counter,primary key(owner,buddy)); 通常,我使用cql在剩余字段上执行一些inc/dec操作,如下所示: update remaining set remain=remain + 1 where owner='userA' and buddy='userB'; update remaining s

我在Cassandradb有一张表,如下所述:

CREATE TABLE remaining (owner varchar,buddy varchar,remain counter,primary key(owner,buddy));
通常,我使用cql在剩余字段上执行一些inc/dec操作,如下所示:

update remaining set remain=remain + 1 where owner='userA' and buddy='userB';
update remaining set remain=remain + 1 where owner='userA' and buddy='userC';
....
现在我需要找出userA的所有伙伴,它的剩余字段大于1。当我使用:

select buddy,remain from remaining where owner='userA' and remain > 0;
给我一个错误:

No indexed columns present in by-columns clause with Equal operator

如何以cassandradb的方式进行查询?

简短的回答是,在Cassandra中,不能使用计数器列上的条件进行查询

这背后的原因是,所有Cassandra查询都需要围绕该特定表的主键建模。计数器列不允许作为表主键的一部分(其值的更改将导致磁盘上dat的不断重组)。计数器列更多地用于跟踪已知数据段的状态,例如一张照片的投票次数。只要我们知道自己对哪张照片感兴趣,就可以很快回忆起这张照片。要按投票数对照片进行实际排序,您需要使用spark或Hadoop执行分析风格的查询