从 HBASE 数据返回聚合
Posted
技术标签:
【中文标题】从 HBASE 数据返回聚合【英文标题】:Returning aggregations from HBASE data 【发布时间】:2010-12-29 16:36:03 【问题描述】:我有一个大约 150k 行的 HBASE 表,每行包含 3700 列。
我需要一次选择多行,然后汇总结果,例如:
行[1][column1] + 行[2][column1] ... + 行[n][column1] 行[1][列2] + 行[2][列2] ... + 行[n][列2] ... 行[1][列] + 行[2][列] ... + 行[n][列]
我可以使用扫描仪来做到这一点,我相信问题在于,扫描仪就像一个光标,并且不会同时执行分布在多台机器上的工作,而是从一个区域获取数据,然后跳到另一个区域以获取下一组数据,依此类推,我的结果跨越多个区域。
有没有办法以分布式方式扫描(一个选项,或者为每个区域的数据价值创建多个扫描仪[这本身可能是一罐蠕虫])还是必须在地图中完成/减少工作。如果它是一个 M/R 工作,它对于实时查询是否足够“快”?如果没有,是否有一些好的替代方法可以使用 NOSQL 类型的数据库实时进行这些类型的聚合?
【问题讨论】:
【参考方案1】:在这种情况下,我会做的是,有另一个表,我将在其中包含聚合摘要。也就是说,当 row[m] 被插入到表 2 中的表 1 中(第 1 列)(这是表 2 的行键)时,我会保存它的总和或其他聚合结果,无论是平均值、标准差、最大值、最小值等等
另一种方法是将它们索引到 Lucene、Solr、Elastic Search 等搜索工具中,并在那里运行聚合搜索。以下是Solr 中的一些示例。
最后,跨多个区域的扫描或 M/R 作业不是为实时查询而设计的(除非集群以这种方式设计,即超出数据要求)。
希望对你有帮助。
【讨论】:
以上是关于从 HBASE 数据返回聚合的主要内容,如果未能解决你的问题,请参考以下文章