通过忽略Java中的起始行和结束行的一部分来扫描HBase行

时间:2016-05-03 18:07:42

标签: java hbase

我有HBase行如下

ABC_A1_20160101
ABC_A2_20160102
ABC_A3_20160103
XYZ_A9_20160201

从我的Java代码我知道第一部分ABC和最后一部分20160101。我无法获得中间部分A1, A2, A3....

在这种情况下,如何在Java中查询?

ABC_A1_20160101ABC_A3_20160103

1 个答案:

答案 0 :(得分:3)

模糊行方法对于这种需求是有效的,并且当数据很大时: 正如此article所解释的那样 FuzzyRowFilter将行键和掩码信息作为参数。在上面的示例中,如果我们想要找到最后登录的用户并且行键格式是userId_actionId_timestamp(其中userId具有固定长度,例如4个字符),我们要查找的模糊行键是“???? 登录”。这转换为FuzzyRowKey的以下参数:

FuzzyRowFilter rowFilter = new FuzzyRowFilter(
 Arrays.asList(
  new Pair<byte[], byte[]>(
    Bytes.toBytesBinary("\x00\x00\x00\x00_login_"),
    new byte[] {1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0})));