2015-05-08 66 views
0

我对hbase相当陌生,想象我们想为每个类别每天汇总独特的文档数量。hbase,是否可以使用前缀对行键进行计数?

第一个想法是有点像下面

表名:年月日 行键:category_docid 列族:凡是似乎以后使用,

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

但有几个问题 1.扫描似乎是重计数操作,因为我必须扫描所有的结果数组,并自行增加。 2.类别不断变化,如果有可能在SQL中做'group by',但是我还没有找到,现在会好得多。

您对这种方法有什么看法,或者还有其他更好的主意吗?

+0

可以考虑添加一个额外的密钥,以保持您感兴趣的密钥模式的计数。因此,您可以执行单个GET操作而不是计数操作/扫描操作。 –

回答

0

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

为了实时计数,您必须在表中实现自己的计数器,并在插入新行时增加它们(或在删除行时将其减少)。 HBase能够完美处理每秒大量的写入操作,这是他最强的一点。您甚至可以通过使用多个系列/列与范围计数器(每小时,每天,每周,每月,每年)来结合生存时间自动修剪旧记录。这取决于你如何实现它:)

请参阅(this working JAVA example)从HBase book source code

0

设置您的扫描对象上的时间范围过滤器以及rowkey前缀过滤器将帮助您实现您的任务。

相关问题