【问题标题】:In HBase, is it possible to filter for columns INSIDE a specifc row?在 HBase 中,是否可以过滤特定行内的列?
【发布时间】:2018-01-15 15:37:30
【问题描述】:

这对于包含数千个单元格的表格是必需的。

假设我们有以 deviceID 作为键的 deviceEvents 表,并且每个事件都存储为一个新列,其名称类似于“event_XPGSGR”、“event_whatever”。

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

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

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

谢谢!

【问题讨论】:

    标签: hbase


    【解决方案1】:

    没有。

    起初我想说的是编写你自己的Filter 接口的实现来执行此操作。但是,如果您查看 HBase 的界面 filterCell ,你会发现你不能。原因是您在查看给定单元格时必须知道是否要保留它。您的查询取决于扫描所有数据以了解最新数据。

    要完成您的愿望,可能需要特殊的架构设计。例如,每当你写一列时,你可以写两次,一次写到它的列名,一次写到“最新”(如果它是最新的)。这将允许对“最新”进行持续时间查找。权衡是你必须计算最新的写入,所以你有二次写入而不是二次读取(假设你必须与所有现有值进行比较)。

    【讨论】:

    • 非常感谢卡洛斯!您证实了我的怀疑,最好使用此信息预先计算一列(数据只写入一次,但读取多次,所以有意义)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2020-12-20
    • 2022-11-29
    相关资源
    最近更新 更多