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

hbase, Is it possible to count row keys with prefix?

我是 hbase 的新手,假设我们想要汇总每个类别每天的唯一文档数。

第一个想法有点像下面

table 姓名:yyyyMMdd 行键:category_docid column family : 之后好像用什么,

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

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

您觉得这种方法怎么样,或者还有其他更好的主意吗?

HBase 不提供实时 table 计数,它必须执行完整的 table 扫描来计算行数,这很慢。

为了获得实时计数,您必须在 table 中实现自己的计数器,并在插入新行时递增它们(或在删除行时递减它们)。 HBase 每秒可以完美处理大量写入,这是他的强项。您甚至可以通过使用多个 families/columns 结合生存时间来自动修剪旧记录,从而拥有范围计数器(每小时、每天、每周、每月、每年...)。如何实现取决于您:)

参见 (this working JAVA example) from the HBase book source code.

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