在HBase中,是否可以过滤特定行中的列?

时间:2018-01-15 15:37:31

标签: hbase

对于具有数千个单元格的行,这是必需的。

假设我们将deviceEvent与deviceID作为键,每个事件都存储为一个名为“event_XPGSGR”,“event_whatever”的新列。

要求是检索“最新事件”,即。具有最新时间戳的单元格。 (或者可能基于单元格的内容进行过滤)

使用ColumnRangeFilter,我们可以过滤以仅检索以“event”开头的列,并且客户端可以查找具有max(timestamp)的事件,但这意味着在每次调用中将所有事件复制到客户端,这是不能接受。

在HBase中没有办法进行此列过滤吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

没有

首先,我打算写一下你自己实现的Filter接口。但是,如果你看一下HBase的界面 filterCell,你会发现你做不到。原因是如果你想保留它,你必须知道何时查看给定的单元格。您的查询取决于扫描所有数据以了解最新信息。

要实现您的目标,可能需要特殊的架构设计。例如,无论何时编写列,都可以将列写入两次,一次写入列名,一次写入“最新”(如果是最新的)。这将允许对“最新”进行恒定时间查找。权衡是你必须计算最新的写入,所以不是二次读取,而是二次写入(假设你必须与所有现有值进行比较)。