我使用前缀过滤器得到给定部分行键的扫描结果:
行键示例:123\u 、456\u def、789\u ghi
var prefix=Bytes.toBytes("123")
var scan = new Scan(prefix)
var prefixFilter = new PrefixFilter(prefix)
scan.setFilter(prefixFilter)
var resultScanner = table.getScanner(scan)
现在,我的问题是如何指定多个前缀过滤器作为扫描操作的输入。result对象应该包含所有具有给定前缀的行键值的行,比如123或456。
我尝试了以下使用filterlist方法的答案,但没有得到所需的结果:
将多前缀行筛选器设置为scanner hbase java
在此方面的任何帮助(scala或java)都将不胜感激。谢谢您。
1条答案
按热度按时间v1uwarro1#
请检查此文档的筛选列表您可能没有使用正确的选项。。。
filterlist.operator.must\ u pass\ u all(and)或filterlist.operator.must\ u pass\ u one(or)。由于可以将筛选器列表用作筛选器列表的子级,因此可以创建要计算的筛选器的层次结构。filterlist.operator.must \u pass \u all evaluates lazy:一旦一个筛选器不包含keyvalue,计算就会停止。filterlist.operator.must \u pass \u one evaluates non lazy:始终计算所有筛选器。默认为filterlist.operator.must\u pass\u all。
要验证的点:
既然你已经用过
FilterList
,我想您可能使用了默认值,即MUST_PASS_ALL
所有的前缀条件都需要满足,这就是为什么它不能给出结果的原因。上述代码应该有效。。祝你好运