1

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

例如:ACNTID1359694800000

Account Id: ACNTID
unixtimestamp: 1359694800000

1359694800000是 2/1/2013 的值

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

4

2 回答 2

1

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

scan 'mytable', {STARTROW => 'ACNTID1359694800000', ENDROW => 'ACNTID1359694800001'}
于 2014-05-11T06:27:05.320 回答
0

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

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

上面的命令将返回所有行1359694800000键中的行。

于 2014-05-12T06:49:04.523 回答