hbase,是否可以使用前缀计算行键?

时间:2015-05-08 01:25:57

标签: hbase

我对hbase很新,想象一下我们想要为每个类别每天汇总唯一的文档计数。

第一个想法有点像下面

表名:yyyyMMdd 行键:category_docid 列系列:之后似乎使用的任何内容,

在这种情况下,我想我可以使用rowkey开始前缀和结束前缀进行扫描,然后计算它们的键。

但是有几个问题 1.扫描对于计数操作似乎很重,因为我必须扫描所有Result数组并自行递增。 2.类别不断变化,如果可以在SQL中执行类似'group by'的操作会更好,但我还没有找到。

您如何看待这种方法还是有其他更好的想法?

2 个答案:

答案 0 :(得分:0)

HBase不提供实时表计数,它必须执行全表扫描来计算行,这很慢。

为了获得实时计数,您必须在表中实现自己的计数器,并在插入新行时递增它们(或在删除行时递减它们)。 HBase可以完美地处理每秒的大量写入,这是他最强的观点。您甚至可以通过使用多个系列/列以及生存时间来自动修剪旧记录来设置范围计数器(每小时,每天,每周,每年,每年......)。它取决于你如何实现它:)

请参阅this working JAVA example中的HBase book source code

答案 1 :(得分:0)

在扫描对象上设置时间范围过滤器以及rowkey前缀过滤器可帮助您完成任务。