Hbase过滤器用于查找没有特定列的行

时间:2014-05-19 17:53:16

标签: filter hbase comparator

我想过滤掉所有没有特定列的行。知道使用哪个比较器?

2 个答案:

答案 0 :(得分:1)

您可以将skip filterqualifier filter结合使用。 如果您使用java客户端API:

Filter filter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes("column-name")));
Filter filter2 = new SkipFilter(filter);
scan.setFilter(filter2);

这将返回没有该特定列的所有行

答案 1 :(得分:0)

SingleColumnValueFilter具有方法setFilterIfMissing,如果给定true,则排除所有不包含给定列的行。所需要的只是设计过滤器,以便它始终通过并调用setFilterIfMissing(true)

    SingleColumnValueFilter filter = new  SingleColumnValueFilter(Bytes.toBytes(columnFamily), Bytes.toBytes("column_name"), CompareFilter.CompareOp.NOT_EQUAL, Bytes.toBytes("non-sense"));
    filter.setFilterIfMissing(true);
    scan.setFilter(filter);