简体   繁体   English

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

[英]Hbase filter to find rows without a specific column

I want to filter out all rows that do not have a specific column. 我想过滤掉所有没有特定列的行。 any idea which comparator to use? 知道哪个比较器使用?

You can use skip filter combined with qualifier filter . 您可以使用跳过过滤器限定符过滤器 If you use the java client API: 如果您使用java客户端API:

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

this will return all the row without that specific column 这将返回没有该特定列的所有行

SingleColumnValueFilter has method setFilterIfMissing that excludes all row that do not contain given column if it is given true . SingleColumnValueFilter有方法setFilterIfMissing排除,如果它被赋予不包含给定列中的所有行的true All that is needed is to design filter so it will always pass and call 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM