我想过滤掉所有没有特定列的行。知道使用哪个比较器?
答案 0 :(得分:1)
您可以将skip filter与qualifier 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);