Cassandra聚合到Map

时间:2017-02-28 13:51:09

标签: hadoop cassandra hive datastax

我是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

1 个答案:

答案 0 :(得分:0)

将查询结果映射到Map(或您选择的其他类型/结构/类)是客户端应用程序的责任,通常是一项简单的任务(但您没有指定将在何种上下文中使用此映射)

这里的实际问题是关于卡桑德拉的GROUP BY。开箱即用不支持此功能。您可以查看Cassandra的standard aggregate functions或尝试创建user defined function,但 Cassandra Way 提前了解您的查询,相应地设计您的架构,在写入阶段进行繁重的工作,然后进行简单的查询。因此,通常可以使用专用counter tables来实现分组/聚合。

另一个选择是在附加层(例如Apache Spark)中进行数据处理。您是否考虑过在Cassandra上使用Hive?