2015-01-17 65 views
0

我有Cassandradb一個見下表提到:怎麼做cassandradb計數表的查詢

CREATE TABLE remaining (owner varchar,buddy varchar,remain counter,primary key(owner,buddy)); 

通常我做一些INC/DEC操作保持場,使用CQL象下面這樣:

update remaining set remain=remain + 1 where owner='userA' and buddy='userB'; 
update remaining set remain=remain + 1 where owner='userA' and buddy='userC'; 
.... 

,現在我需要找出用戶A的所有哥們它是REMAIN場大於1.當我使用:

select buddy,remain from remaining where owner='userA' and remain > 0; 

給我一個錯誤:

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

如何以cassandradb的方式做到這一點?

回答

0

對此的簡短回答是,您無法在Cassandra的計數器列上使用條件查詢。

背後的原因是所有的Cassandra查詢都需要圍繞該特定表的主鍵進行建模。計數器列不允許作爲表的主鍵的一部分(它們的變化值會導致磁盤上dat的不斷重組)。計數器列更多地用於跟蹤已知數據的狀態,例如照片被增選的次數。只要我們知道我們感興趣的照片,就可以快速回想起來。要通過票數來實際分類照片,您需要使用spark或Hadoop執行分析樣式查詢。