设置多前缀行过滤器为scanner hbase java



我想创建一个扫描器,将给我的结果与2前缀过滤器
例如,我想要其键以字符串"x"开头或以字符串"y"开头的所有行。
目前我只知道用下面的方法做一个前缀:

scan.setRowPrefixFilter(prefixFiltet)

在这种情况下,您不能使用setRowPrefixFilter API,您必须使用更通用的setFilter API,例如:

scan.setFilter(
  new FilterList(
    FilterList.Operator.MUST_PASS_ONE, 
    new PrefixFilter('xx'), 
    new PrefixFilter('yy')
  )
);

我刚刚尝试过,但似乎你不能添加一个正则表达式到RowPrefixFilter,所以我想解决方案是使用

发出两个请求
scan.setRowPrefixFilter("x")
scan.setRowPrefixFilter("y")

我实现了一个批量设置前缀过滤器,也许可以帮助你

    List<String> bindCodes = new ArrayList<>();
    bindCodes.add("CM0001");
    bindCodes.add("CE7563");
    bindCodes.add("DR6785");
    Scan scan = new Scan();
    scan.setCaching(50);//set get batch numbers
    //set Column
    scan.addColumn(HTableColumnEnum.GPS_CF_1.getCfName().getBytes(), LOCATION_CREATE_DATE_ARRAY);
    //set Family
    scan.addFamily(HTableColumnEnum.GPS_CF_1.getCfName().getBytes());
    //create filterList
    FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE);
    //put mulit prefix row key
    bindCodes.forEach(s -> {
        filterList.addFilter(new PrefixFilter(Bytes.toBytes(s)));
    });
    //set filterList to scan
    scan.setFilter(filterList);

相关内容

  • 没有找到相关文章

最新更新