【问题标题】:Cassandra aggregate to MapCassandra 聚合到 Map
【发布时间】:2017-07-19 12:43:12
【问题描述】:

我是 cassandra 的新手,过去几个月我主要使用 Hive。最近我开始了一个项目,我需要用 cassandra 代替我在 hive 中做的一些事情。

基本上,我正在尝试找到一种方法,将多行聚合到一个查询中的单个地图中。

在 hive 中,我只是使用“地图”聚合进行分组。 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

【问题讨论】:

    标签: hadoop cassandra hive datastax


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 2015-05-19
      • 1970-01-01
      • 2018-05-22
      • 2015-09-28
      相关资源
      最近更新 更多