我是cassandra的新手,过去几个月我一直主要使用Hive。最近我开始了一个项目,我需要用Cassandra做一些我在蜂房中做的事情。
基本上,我正在尝试找到一种方法,在查询时将多行聚合到一个地图中。
在蜂巢中,我只是通过一个"地图"骨料。在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
答案 0 :(得分:0)
将查询结果映射到Map(或您选择的其他类型/结构/类)是客户端应用程序的责任,通常是一项简单的任务(但您没有指定将在何种上下文中使用此映射)
这里的实际问题是关于卡桑德拉的GROUP BY
。开箱即用不支持此功能。您可以查看Cassandra的standard aggregate functions或尝试创建user defined function,但 Cassandra Way 提前了解您的查询,相应地设计您的架构,在写入阶段进行繁重的工作,然后进行简单的查询。因此,通常可以使用专用counter tables来实现分组/聚合。
另一个选择是在附加层(例如Apache Spark)中进行数据处理。您是否考虑过在Cassandra上使用Hive?