关闭

Hbase API高级特性-附加过滤器

标签: hbaseAPIfilter
857人阅读 评论(0) 收藏 举报
分类:

1.   跳转过滤器(SkipFilter)

该过滤器包含了一个用户提供 过滤器,当被包装的过滤器遇到一个需要过滤的KeyValue实例时,用户可以过滤整行数据。当过滤器发现某一行中的一列需要过滤时,那么整行数据都将被过滤掉。例如:SkipFilter与ValueFilter组合起来获取不包含空列值得行。

public void skipFilter() throws IOException{
Filter filter1 = new ValueFilter(CompareFilter.CompareOp.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("hunan")));

Scan scan = new Scan();
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
for(Result res : scanner1){
for(KeyValue kv: res.raw())
System.out.println("KV1: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner1.close();

Filter filter2 = new SkipFilter(filter1);
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for(Result res : scanner2){
for(KeyValue kv: res.raw())
System.out.println("KV2: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner2.close();
}

2.   全匹配过滤器(WhileMatchFilter)

当遇到一条数据被过滤时,它就会放弃后面的扫描。使用封装的过滤器来检查KeyValue,并确认是否一行数据因行键或是列被跳过而过滤。

public void WhileMatchFilter() throws IOException{
Filter filter1 = new RowFilter(CompareFilter.CompareOp.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("3103")));

Scan scan = new Scan();
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
for(Result res : scanner1){
for(KeyValue kv: res.raw())
System.out.println("KV1: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner1.close();

Filter filter2 = new WhileMatchFilter(filter1);
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for(Result res : scanner2){
for(KeyValue kv: res.raw())
System.out.println("KV2: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner2.close();
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:97044次
    • 积分:2116
    • 等级:
    • 排名:第18585名
    • 原创:117篇
    • 转载:26篇
    • 译文:0篇
    • 评论:5条
    最新评论