美文网首页
scan与过滤器用法

scan与过滤器用法

作者: analanxingde | 来源:发表于2019-04-16 10:58 被阅读0次

    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();
    

    相关文章

      网友评论

          本文标题:scan与过滤器用法

          本文链接:https://www.haomeiwen.com/subject/qjuvwqtx.html