我有我的hbase数据,行键作为siteid\u时间戳。
行-列+单元格
001_column=hd:,timestamp=1454578173766,value=2
001_column=hd:def,timestamp=1454578173766,value=2
002_column=hd:ijk,timestamp=1454578173766,value=2
002_column=hd:lmn,timestamp=1454578173766,value=2
站点ID可以不同。我的要求是获取时间戳范围内的行。此时间戳将是不带siteid和下划线的行键。我不想使用hbase时间戳。
因此,如果我要求时间戳的范围为>=1454578003995&&<=1454578003996,我应该得到前两行。
你能帮我做这个吗?
1条答案
按热度按时间vsmadaxz1#
对于这种情况,我们需要执行
scan
用一个Filter(s)
[1].因为我们必须根据
rowkey
,我们可以用RowFilter
一起RegexStringComparator
. 这个RegexStringComparator
允许我们使用方便的正则表达式进行查询/限制,但请记住,对于大量数据,性能可能会受到影响。一些用于说明的伪代码我们可以把多个
filters
也一样。(参见FilterList
)观察
FuzzyRowFilter
[3] ,如果您需要更高的效率(它在格式/结构方面有一些限制rowkey
)一些具体的例子[4]。
希望有帮助。
[1] hbase扫描api:https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/scan.html
[2] 滤波器和比较器:https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/package-summary.html
[3] https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/fuzzyrowfilter.html
[4] https://github.com/larsgeorge/hbase-book/blob/master/ch04/src/main/java/filters/rowfilterexample.java