zoukankan      html  css  js  c++  java
  • HBase中我认为比较常用的两个类:Scan和Filter

    学习HBase一段时间后,我认为HBase中比较常用,同时也是必须掌握的两个API是Scan和Filter。如下是我的理解:

    1.Scan  ---- 扫描类

       作用:用来对一个指定Table进行按行扫描,从而得到属于[起始行健,终止行健)的扫描结果

       使用场合:单纯的扫描用途;用于MapReduce计算的输入

    2.Filter --- 过滤类

       作用:用来提前在Server端,对要返回的数据,按照定义好的要求进行过滤;从而降低从Server到Client的数据量,进而降低对网络IO的影响

       使用场合:与Scan配合使用

       种类:有HBase定义好的几种Filter,也有提供基于FilterBase进行自定义过滤器的方法。特别要注意的是:Filter的作用是过滤掉东西,而不是保留东西。因此其返回true,则意味着成功过滤掉了;返回false,表示没有被过滤掉。

    3.举例:

            HTable t = new HTable(conf, "twits");
            Scan s = new Scan(startRowkey, endRowkey);  //构造Scan对象,此对象会返回[startRowkey,endRowkey)范围的记录。特别的,HBase里面的行健是按照字典顺序排列的(可以和lucene里面的索引的顺序进行类比吧?);而且startRowkey和endRowkey也无须真实存在,HBase会自动找到最靠近其的实际rowkey作为边界
            //当然,这里还可以加入过滤器,比如:s.setFilter(具体的Filter对象实例);

            ResultScanner rs = t.getScanner(s); //获得扫描后的结果集
            for(Result r:rs) { //每一行的扫描结果,记录在Result中;
                for(KeyValue kv:r.raw()) {//这里就体现了HBase中的存储实际上是 嵌套的MAP 的含义了。
                    System.out.println("Rowkey is " + Bytes.toString(kv.getRow()));
                    System.out.println("family is " + Bytes.toString(kv.getFamily()));
                    System.out.println("qualify is " + Bytes.toString(kv.getQualifier()));
                    System.out.println("timestamp is " + kv.getTimestamp());    
                    System.out.println("value is " + Bytes.toString(kv.getValue()));
                }
            }

  • 相关阅读:
    Javascript之旅——第七站:说说js的调试
    Javascript之旅——第六站:看看writable特性
    Javascript之旅——第五站:说说那些所谓的包装类型
    Javascript之旅——第四站:parseInt中要注意的坑
    Javascript之旅——第三站:几个需要注意的运算符
    Javascript之旅——第二站:对象和数组
    Javascript之旅——第一站:从变量说起
    学习和使用 PHP 应该注意的10件事
    8/7排位赛,codeforces501
    8.7排位赛,codeforces501
  • 原文地址:https://www.cnblogs.com/lagujw/p/3639233.html
Copyright © 2011-2022 走看看