1.1 RowFilter
构造函数
public RowFilter(CompareOp rowCompareOp, WritableByteArrayComparable rowComparator) {}
选择比较rowkey来确定选择合适的行信息。
示例代码:
package filter;
import java.io.IOException;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.util.Bytes;
public class RowFilterExample extends FilterExampleBase{
public static void main(String[] args) throws IOException {
new RowFilterExample().doMain();
}
@Override
public void testFilter() throws IOException {
System.out.println("-----------------testFilter() start-------------");
HTable table = new HTable(config, tableName);
Scan scan = new Scan();
// scan.addColumn(Bytes.toBytes("c1"), Bytes.toBytes("a"));
Filter filter1 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
new BinaryComparator(Bytes.toBytes("r2")));
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
showScanner(scanner1);
scanner1.close();
showLine();
Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator(".*3"));
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
showScanner(scanner2);
scanner2.close();
showLine();
Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new SubstringComparator("4"));
scan.setFilter(filter3);
ResultScanner scanner3 = table.getScanner(scan);
showScanner(scanner3);
scanner3.close();
System.out.println("-----------------testFilter() end-------------");
}
}
结果:
start create table......
test is exist delete!!!
create table over......
start insert......
end insert......
-----------------findAll() start-------------
{rowkey:r1 c1:a=r1c1a c1:b=r1c1b c2:a=r1c2a c2:b=r1c2b}
{rowkey:r2 c1:a=r2c1a c2:b=r2c2b}
{rowkey:r3 c1:a=c1a c1:b=r3c1b c2:a=r3c2b c2:b=r3c2b}
{rowkey:r4 c1:a=c1a c1:b=r4c1b c2:a=r4c2b c2:b=r4c2b}
-----------------findAll() end-------------
-----------------testFilter() start-------------
{rowkey:r1 c1:a=r1c1a c1:b=r1c1b c2:a=r1c2a c2:b=r1c2b}
{rowkey:r2 c1:a=r2c1a c2:b=r2c2b}
-----------------
{rowkey:r3 c1:a=c1a c1:b=r3c1b c2:a=r3c2b c2:b=r3c2b}
-----------------
{rowkey:r4 c1:a=c1a c1:b=r4c1b c2:a=r4c2b c2:b=r4c2b}
-----------------testFilter() end-------------
package filter;
import java.io.IOException;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.util.Bytes;
public class RowFilterExample extends FilterExampleBase{
public static void main(String[] args) throws IOException {
new RowFilterExample().doMain();
}
@Override
public void testFilter() throws IOException {
System.out.println("-----------------testFilter() start-------------");
HTable table = new HTable(config, tableName);
Scan scan = new Scan();
// scan.addColumn(Bytes.toBytes("c1"), Bytes.toBytes("a"));
Filter filter1 = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
new BinaryComparator(Bytes.toBytes("r2")));
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
showScanner(scanner1);
scanner1.close();
showLine();
Filter filter2 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new RegexStringComparator(".*3"));
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
showScanner(scanner2);
scanner2.close();
showLine();
Filter filter3 = new RowFilter(CompareFilter.CompareOp.EQUAL,
new SubstringComparator("4"));
scan.setFilter(filter3);
ResultScanner scanner3 = table.getScanner(scan);
showScanner(scanner3);
scanner3.close();
System.out.println("-----------------testFilter() end-------------");
}
}
结果:
start create table......
test is exist delete!!!
create table over......
start insert......
end insert......
-----------------findAll() start-------------
{rowkey:r1 c1:a=r1c1a c1:b=r1c1b c2:a=r1c2a c2:b=r1c2b}
{rowkey:r2 c1:a=r2c1a c2:b=r2c2b}
{rowkey:r3 c1:a=c1a c1:b=r3c1b c2:a=r3c2b c2:b=r3c2b}
{rowkey:r4 c1:a=c1a c1:b=r4c1b c2:a=r4c2b c2:b=r4c2b}
-----------------findAll() end-------------
-----------------testFilter() start-------------
{rowkey:r1 c1:a=r1c1a c1:b=r1c1b c2:a=r1c2a c2:b=r1c2b}
{rowkey:r2 c1:a=r2c1a c2:b=r2c2b}
-----------------
{rowkey:r3 c1:a=c1a c1:b=r3c1b c2:a=r3c2b c2:b=r3c2b}
-----------------
{rowkey:r4 c1:a=c1a c1:b=r4c1b c2:a=r4c2b c2:b=r4c2b}
-----------------testFilter() end-------------
1.2 FamilyFilter
构造函数
public FamilyFilter(CompareOp familyCompareOp, WritableByteArrayComparable familyComparator) {}
通过和列簇比较得到,返回结果为真的数据,示例:
package filter;
import java.io.IOException;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.filter.ValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class FamilyFilterExample extends FilterExampleBase{
public static void main(String[] args) throws IOException {
new FamilyFilterExample().doMain();
}
public void testFilter() throws IOException {
Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL,
new SubstringComparator("c1"