我有带行键的HBase表,它由文本ID和时间戳组成,如下所示:
... string_id1.1470913344067 string_id1.1470913345067 string_id2.1470913344067 string_id2.1470913345067 ...
如何过滤HBase扫描(在Scala或Java中)以获得某些字符串ID和时间戳超过某个值的结果?
谢谢
解决方法
模糊行方法对于这种要求是有效的,并且当数据很大时:
正如 article所解释的那样
FuzzyRowFilter将行键和掩码信息作为参数.
正如 article所解释的那样
FuzzyRowFilter将行键和掩码信息作为参数.
在上面的示例中,如果我们想要找到最后登录的用户并且行键格式是userId_actionId_timestamp(其中userId具有固定长度,例如4个字符),我们要查找的模糊行键是???? _ login_.这转换为FuzzyRowKey的以下参数:
FuzzyRowFilter rowFilter = new FuzzyRowFilter( Arrays.asList( new Pair<byte[],byte[]>( Bytes.toBytesBinary("\x00\x00\x00\x00_login_"),new byte[] {1,1,0})));
建议通过hbase-the-definitive guide – > Client API: Advanced Features