【发布时间】:2016-06-28 03:25:39
【问题描述】:
我有一个 Cassandra 表,如下所示:
create table experience.userstats (stream varchar, user varchar, computer varchar, experience varchar, amount int, primary key (experience, stream, user, computer);
我正在使用 Apache 风暴螺栓从队列喷口在 Cassandra 中创建这些记录。
我想生成汇总统计数据并将给定流的不同体验的计数器显示为饼图。例如,30% 的满意、40% 的混合和 30% 的不满意体验。
由于我无法在线更新计数器,我使用 Clock spout(计时器)来读取此数据并将计数器生成到新表中。但是 Cassandra 不支持 group by 子句,因此我必须阅读三次才能获得以下每种体验的计数器。
select count(*) from experience.userstats where experience='satisfied' and stream='xyz';
select count(*) from experience.userstats where experience='unsatisfied' and stream='xyz';
select count(*) from experience.userstats where experience='mixed' and stream='xyz';
这种方法的问题是我必须在数据库上执行三个查询才能获得 3 种经验类型的计数器,同时可以修改经验使这些计数器不一致。
有没有一种方法可以一次执行以上三个 select 语句?或者您能否建议一种替代设计方法?
【问题讨论】:
标签: cassandra apache-storm cassandra-2.1