我有一个类似于
的Hbase表cf:col1 | cf:col2
-----------------
A | 1
A | 2
B | 1
B | 2
我想过滤取决于col1值的扫描结果。具体来说,我只想要记录(col1为'A',col2为'1')或(col1为'B',col2为'2')。有没有办法使用标准过滤器?我是通过Java MapReduce作业完成的。
答案 0 :(得分:0)
您可以使用两个SingleColumnValueFilters。
Scan scan = new Scan();
FilterList filterList = new FilterList();
filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes("cf"), Bytes.toBytes("col1"), CompareOp.NOT_EQUAL, Bytes.toBytes("1")));
filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes("cf"), Bytes.toBytes("col2"), CompareOp.NOT_EQUAL, Bytes.toBytes("1")));
//Set whether entire row should be filtered if column is not found.
filter.setFilterIfMissing(false);
scan.setFilter(filterList);
来自shell
scan 'yourTable' ,{ FILTER => "SingleColumnValueFilter('cf','col1',=, 'binary:1') AND SingleColumnValueFilter('cf','col2',=, 'binary:1')" }