我是新来Cassandra,我主要是使用Hive过去几个月。最近我开始了一个项目,我需要做一些事情,我在Hive与Cassandra代替。
本质上,我试图找到一种方法,在查询时将多行聚合到单个Map中。
在hive中,我只需使用“map”聚合进行分组。Cassandra有没有类似的方法?
下面是一个执行我希望执行的任务的工作配置单元查询的示例:
select
map(
"quantity", count(caseid)
, "title" ,casesubcat
, "id" , casesubcatid
, "category", named_struct("id",casecatid,'title',casecat)
) as casedata
from caselist
group by named_struct("id",casecatid,'title',casecat) , casesubcat, casesubcatid
1条答案
按热度按时间sulc1iza1#
将查询结果Map到map(或您选择的其他类型/结构/类)是客户机应用程序的责任,通常是一项琐碎的任务(但您没有指定要在什么上下文中使用此Map)。
真正的问题是
GROUP BY
在Cassandra。这是不支持的开箱即用。您可以检查cassandra的标准聚合函数,也可以尝试创建用户定义的函数,但是cassandra的方法是提前知道您的查询,相应地设计您的模式,在编写阶段执行繁重的工作,然后简化查询。因此,通常可以通过使用专用计数器表来实现分组/聚合。另一个选择是在附加层中进行数据处理(例如apachespark)。你考虑过在Cassandra上面用Hive吗?