我是 cassandra 的新手,过去几个月我主要使用 Hive。最近我开始了一个项目,我需要用 cassandra 代替在 hive 中做的一些事情。
本质上,我正在尝试找到一种方法来将多行聚合到查询时的单个映射中。
在配置单元中,我只是使用“ map ”聚合进行分组。 cassandra 中是否存在做类似事情的方法?
这是一个工作 hive 查询的例子,它完成了我想要做的任务:
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
最佳答案
将查询结果映射到 Map(或您选择的某些其他类型/结构/类)是客户端应用程序的责任,通常是一项微不足道的任务(但您没有指定将在什么上下文中使用此映射) .
这里的实际问题是关于 Cassandra 中的 GROUP BY
。这是不支持开箱即用的。你可以查看 Cassandra 的 standard aggregate functions或者尝试创建 user defined function ,但是 Cassandra Way 提前了解您的查询,相应地设计您的架构,在写入阶段完成繁重的工作,然后简化查询。因此,分组/聚合通常可以通过使用专用的 counter tables 来实现。 .
另一种选择是在附加层(例如 Apache Spark)中进行数据处理。您是否考虑过在 Cassandra 上使用 Hive?
关于hadoop - Cassandra 聚合到 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42510546/