我们有 hbase 表,行键为 AccountId 和 unixtimestamp。
例如:ACNTID1359694800000
Account Id: ACNTID
unixtimestamp: 1359694800000
1359694800000
是 2/1/2013 的值
我正在寻找给定日期的帐户 ID 查询?我可以使用 startrow,stop row 逻辑吗?还有其他方法吗?
我们有 hbase 表,行键为 AccountId 和 unixtimestamp。
例如:ACNTID1359694800000
Account Id: ACNTID
unixtimestamp: 1359694800000
1359694800000
是 2/1/2013 的值
我正在寻找给定日期的帐户 ID 查询?我可以使用 startrow,stop row 逻辑吗?还有其他方法吗?
你在正确的轨道上。startrow 是包含的,end row 是独占的。因此,只需将 1 添加到最后一行的 unix 时间戳即可。
scan 'mytable', {STARTROW => 'ACNTID1359694800000', ENDROW => 'ACNTID1359694800001'}
您的 rowkey 结构不支持为任何给定的 unix 时间戳获取帐户 ID,因为您的时间戳位于 rowkey 的最右侧,或者至少不单独使用 STARTROW 和 STOPROW。要获得所需的结果,您的查询应该扫描表的所有行键并对给定的时间戳进行过滤。HBase 带有一个名为RowFilter的过滤器,与Scan一起使用,以限制 HBase 返回的行。由于您将行键存储为文本,因此您可以将SubStringComparator或RegexStringComparator与RowFilter一起使用。与此等效的命令行是,
scan 'table_name', { FILTER =>"RowFilter(=,'substring:1359694800000')"}
上面的命令将返回所有行1359694800000
键中的行。