HBase复杂筛选器未返回所有列

HBase复杂筛选器未返回所有列,hbase,Hbase,上面的代码有一些奇怪的结果。HBase扫描程序确实会返回正确过滤的结果(通过列表中的两个过滤器),但是服务器不会在结果中传回filterOnA列。只有过滤器B的CF的KV存在 我尝试了很多方法,比如scan.addFamily(Constants.CF\u META),但这会导致扫描仪为空。默认情况下,扫描仪不应该返回满足两个过滤器的所有KV的所有列吗 我想知道复合过滤器逻辑是否足够“智能”来处理在不同位置/区域服务器的2个不同CF上应用的2个过滤器 SingleColumnValueFilte

上面的代码有一些奇怪的结果。HBase扫描程序确实会返回正确过滤的结果(通过列表中的两个过滤器),但是服务器不会在结果中传回filterOnA列。只有过滤器B的CF的KV存在

我尝试了很多方法,比如
scan.addFamily(Constants.CF\u META)
,但这会导致扫描仪为空。默认情况下,扫描仪不应该返回满足两个过滤器的所有KV的所有列吗


我想知道复合过滤器逻辑是否足够“智能”来处理在不同位置/区域服务器的2个不同CF上应用的2个过滤器

SingleColumnValueFilter
按列的给定值筛选行,但随后应用
FamilyFilter
,因此我希望只返回此CF的KV。第一个筛选器不筛选所需的列,但它限制是否考虑该行(是否通过该筛选器)。然后,族过滤器只选择“某个值”,而不选择另一个值

val scan = new Scan()
val hBaseConf = HBaseConfiguration.create()
val hUsers = new HTable(hBaseConf, "users")
val filterOnA = new SingleColumnValueFilter(Constants.CF_META, Bytes.toBytes("id"), CompareFilter.CompareOp.NOT_EQUALS, Bytes.toBytes("##"))
val filterOnB = new FamilyFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes("some_value")))
val filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL)
filterList.addFilter(filterOnA)
filterList.addFilter(filterOnB)
hUsers.getScanner(scan.setFilter(filterList))