- 1
- 0
- 约1.02万字
- 约 9页
- 2018-01-02 发布于河南
- 举报
Hbase葱岭探秘--过滤器Api
Hbase葱岭探秘--过滤器Api
Hbase中提供了许多的过滤器接口,以此来对数据进行过滤,使得查询出想要的数据。
行过滤器
针对行信息进行过滤,参数中可以采用前缀匹配、按位与、或、异或以及子串匹配等匹配的方式。同时可以控制EQUAL、NOT_EQUAL选项进行控制筛选数据的条件。
/**
* 行过滤器 BinaryComparator
NullComparator:是不是空值
* BitComparator:通过BitwiseOp类提供的按位与、或、异或操作进行位级别比较 RegexStringComparator:正则匹配
* SubStringComparator:子串是不是包含进行匹配
*/
private static void testRowFilter() {
try {
HTable table = new HTable(config, testtable);
Scan scan = new Scan();
scan.addColumn(col1.getBytes(), name.getBytes());
// 行过滤器
Filter filter = new RowFilter(CompareOp.EQUAL,
new BinaryComparator(row2.getBytes()));
scan.setFilter(filter);
ResultScanner result = table.getScanner(scan);
for (Result res : result) {
(行过滤器 + res);
}
// 正则的行过滤器
Filter filter2 = new RowFilter(CompareOp.EQUAL,
new RegexStringComparator(.*.2));
scan.setFilter(filter2);
ResultScanner resultRegx = table.getScanner(scan);
for (Result res : resultRegx) {
(正则 + res);
}
Filter filterSubString = new RowFilter(CompareOp.EQUAL,
new SubstringComparator(w2));
scan.setFilter(filterSubString);
ResultScanner resultSubString = table.getScanner(scan);
for (Result res : resultSubString) {
(子串 + res);
}
table.close();
} catch (IOException e) {
log.error(e);
}
列族过滤器
根据列族的数据进行筛选,形式和上面的行过滤器类似,通过控制相应的参数中的筛选的条件进行相应的筛选。
/**
* 列族过滤器
*/
private static void testFamlyFilter() {
try {
HTable table = new HTable(config, testtable);
Filter filter = new FamilyFilter(CompareOp.EQUAL,
new BinaryComparator(col1.getBytes()));
Scan scan = new Scan(row2.getBytes(), filter);
Resu
原创力文档

文档评论(0)