HBase按值替换另一列的值

时间:2015-11-04 16:14:15

标签: hbase

我有一个类似于

的Hbase表
cf:col1 | cf:col2
----------------- 
   A    |   1
   A    |   2
   B    |   1
   B    |   2

我想过滤取决于col1值的扫描结果。具体来说,我只想要记录(col1为'A',col2为'1')或(col1为'B',col2为'2')。有没有办法使用标准过滤器?我是通过Java MapReduce作业完成的。

1 个答案:

答案 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')" }