要Map的cassandra聚合

wpcxdonn  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

我是新来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
sulc1iza

sulc1iza1#

将查询结果Map到map(或您选择的其他类型/结构/类)是客户机应用程序的责任,通常是一项琐碎的任务(但您没有指定要在什么上下文中使用此Map)。
真正的问题是 GROUP BY 在Cassandra。这是不支持的开箱即用。您可以检查cassandra的标准聚合函数,也可以尝试创建用户定义的函数,但是cassandra的方法是提前知道您的查询,相应地设计您的模式,在编写阶段执行繁重的工作,然后简化查询。因此,通常可以通过使用专用计数器表来实现分组/聚合。
另一个选择是在附加层中进行数据处理(例如apachespark)。你考虑过在Cassandra上面用Hive吗?

相关问题