scan与过滤器用法

2019-04-16  本文已影响0人  analanxingde

1. scan扫描

get:查询一条结果
scan可以查询多条

Scan scan=new Scan(Bytes.toBytes("row1"));
ResultScanner rs=table.getScanner(scan);
for(Result r : rs)
        String name=Bytes.toString(r.getValue(Bytes.toBytes("myself"),Bytes.toBytes("name")));
        System.out.println(name);
rs.close();

注意:scan和get的结果获取本质上一样,Table通过传入scan之后返回的结果扫描器ResultScanner没有真正去查询结果,打开扫描器,遍历它,才真正的去查询数据

2. 过滤器

过滤器是在Get或者Scan的时候过滤结果用的, 可以把它看成SQL中的Where语句

2.1 单过滤器用法简介
Filter filter=new xxxFilter(...);
scan.setFilter(filter);

例如:值过滤器

Filter filter=new ValueFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("Wang"));
2.2 过滤器列表

Scan只有setFilter而没有addFilter方法,可是在实际工作中我们肯定是需要同时使用多个过滤器的,此时可以使用过滤器列表( FilterList)。

List<Filter> filters=new ArrayList<Filter>();
Filter nameFilter=new SingleColumnValueFilter(Bytes.toBytes("mycf"),Bytes.toBytes("name"),CompareOp.EQUAL,new SubstringComparator("Wang"));;
filters.add(nameFilter);
        
Filter pageFilter=new PageFilter(2L);
filters.add(pageFilter);
        
FilterList filterList = new FilterList(filters);
scan.setFilter(filterList);
ResultScanner rs=table.getScanner(scan);
for(Result r : rs)
        String name=Bytes.toString(r.getValue(Bytes.toBytes("myself"),Bytes.toBytes("name")));
        System.out.println(name);
rs.close();
上一篇 下一篇

猜你喜欢

热点阅读