【问题标题】:how to scan hbase table when unix timestamp is part of the rowkey?当unix时间戳是行键的一部分时如何扫描hbase表?
【发布时间】:2014-05-09 23:19:36
【问题描述】:

我们有 hbase 表,其中行键为 AccountId 和 unixtimestamp。

例如:ACNTID1359694800000

Account Id: ACNTID
unixtimestamp: 1359694800000

1359694800000 是 2/1/2013 的值

我正在寻找某个特定日期的帐户 ID 查询?我可以使用 startrow,stop row 逻辑吗?还有其他方法吗?

【问题讨论】:

    标签: filter get hbase database-scan


    【解决方案1】:

    你在正确的轨道上。 startrow 是包含的,end row 是独占的。因此,只需将 1 添加到最后一行的 unix 时间戳即可。

    scan 'mytable', {STARTROW => 'ACNTID1359694800000', ENDROW => 'ACNTID1359694800001'}
    

    【讨论】:

      【解决方案2】:

      您的 rowkey 结构不支持为任何给定的 unix 时间戳获取帐户 ID,因为您的时间戳位于 rowkey 的最右侧,或者至少不单独使用 STARTROW 和 STOPROW。要获得所需的结果,您的查询应该扫描表的所有行键并对给定的时间戳进行过滤。 HBase 带有一个名为RowFilter 的过滤器,与Scan 一起使用,以限制HBase 返回的行。由于您将行键存储为文本,因此您可以使用SubStringComparatorRegexStringComparator 以及RowFilter。与此等效的命令行是,

      scan 'table_name', { FILTER =>"RowFilter(=,'substring:1359694800000')"}
      

      上述命令将返回所有行键中包含1359694800000 的行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-25
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多