当unix时间戳是rowkey的一部分时,如何扫描hbase表?

zu0ti5jz  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(497)

我们有一个hbase表,行键是accountid和unixtimestamp。
如: ACNTID1359694800000Account Id: ACNTID unixtimestamp: 13596948000001359694800000 是2013年2月1日的值
我在找一个关于给定日期帐户ID的查询?我可以用startrow,stop row逻辑吗。还有别的办法吗?

yizd12fk

yizd12fk1#

你在正确的轨道上。开始行是包含的,结束行是独占的。因此,只要在结束行的unix时间戳中添加1,就可以设置。

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

pzfprimi2#

您的rowkey结构不支持获取任何给定unix时间戳的帐户id,因为您的示例中的时间戳位于rowkey的最右边,或者至少不单独使用startrow和stoprow。为了得到所需的结果,您的查询应该扫描表的所有行键,并对给定的时间戳进行过滤。hbase附带了一个名为rowfilter的过滤器,与scan一起使用,用于限制hbase返回的行。由于将rowkey存储为文本,因此可以将substringcomparator或regexstringcomparator与rowfilter一起使用。命令行等价于,

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

上面的命令将返回所有具有 1359694800000 在他们的rowkey里。

相关问题