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();
网友评论