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