对于具有数千个单元格的行,这是必需的。
假设我们将deviceEvent与deviceID作为键,每个事件都存储为一个名为“event_XPGSGR”,“event_whatever”的新列。
要求是检索“最新事件”,即。具有最新时间戳的单元格。 (或者可能基于单元格的内容进行过滤)
使用ColumnRangeFilter,我们可以过滤以仅检索以“event”开头的列,并且客户端可以查找具有max(timestamp)的事件,但这意味着在每次调用中将所有事件复制到客户端,这是不能接受。
在HBase中没有办法进行此列过滤吗?
谢谢!
答案 0 :(得分:0)
没有
首先,我打算写一下你自己实现的Filter
接口。但是,如果你看一下HBase的界面
filterCell,你会发现你做不到。原因是如果你想保留它,你必须知道何时查看给定的单元格。您的查询取决于扫描所有数据以了解最新信息。
要实现您的目标,可能需要特殊的架构设计。例如,无论何时编写列,都可以将列写入两次,一次写入列名,一次写入“最新”(如果是最新的)。这将允许对“最新”进行恒定时间查找。权衡是你必须计算最新的写入,所以不是二次读取,而是二次写入(假设你必须与所有现有值进行比较)。