学习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()));
            }
        }

HBase中我认为比较常用的两个类:Scan和Filter的更多相关文章

  1. C#中对文件File常用操作方法的工具类

    场景 C#中File类的常用读取与写入文件方法的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99693983 注: 博客 ...

  2. 获取JPEGImageEncoder和JPEGCode这两个类

    最近要对PDF做一些操作,在查看别人代码,拿过来借用的时候,由于代码不完整,引用的类也不全,导致JPEGImageEncoder和JPEGCode这两个类找不到,后来网上搜索了下,发现这两个类来自于J ...

  3. 【原】C#两个类互相包含类对象可以吗?

    在阅读大牛代码的时候发现了这个问题,之所以标题以问号开头,是因为我还没搞懂这个问题.权当记录,以希望以后搞懂. 部分图片转贴吧:http://tieba.baidu.com/p/6015910029 ...

  4. .Net 中读写Oracle数据库常用两种方式

    .net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...

  5. web 中常用的两种上传文件的方法总结

    这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1.springmvc .MultipartFile 的上传方式. 2.org.apache.commons.fileupload 使用 ...

  6. <cstring>中常用的两个函数memset()和memcpy()

    <cstring>是c++对c中的<string.h>进行了重写,这两个头文件中的函数用法是一样的,所以在用的时候包含哪个头文件都行.下面介绍一下 <cstring> ...

  7. HBase中的压缩算法比较 GZIP、LZO、Zippy、Snappy [转]

    网址: http://www.cnblogs.com/panfeng412/archive/2012/12/24/applications-scenario-summary-of-compressio ...

  8. 一起学HBase——总结HBase中的PUT、GET、DELETE操作

    传统的关系型数据库有CRUD增删改查操作,同样对于NoSQL列式数据库也有CRUD操作.本文对HBase中常用的Scan.GET.PUT.DELETE操作的用法做个总结. Put操作 Put相当于传统 ...

  9. MapReduce将HDFS文本数据导入HBase中

    HBase本身提供了很多种数据导入的方式,通常有两种常用方式: 使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 另一种方式就是使用HB ...

随机推荐

  1. 【背包DP】【OpenJudge4978】宠物小精灵之收服

    宠物小精灵之收服 总时间限制: 1000ms 内存限制: 65536kB [描述] 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生 ...

  2. 基于avalon+jquery做的bootstrap分页控件

    刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js:基于BootStrap样式这个大家都很熟悉 在这里推荐下国产前端神器avalon:确实好用,帮我解决了很多前端问题. 不多说了,代 ...

  3. 【教训】null == '',改造ThinkSNS 系统里面的一个缓存管理函数S()后,留下一个大bug

    本来想简化 ThinkSNS 系统里面的一个缓存管理函数: <?php /** * 用来对应用缓存信息的读.写.删除 * $expire = null/0 表示永久缓存,否则为缓存有效期 */ ...

  4. VUE的进阶 标签属性数据绑定和拼接

    在vue官网把文档扫了一遍后,就开始写网站项目了,没有设计,就百度里找了一个h5的助赢软件的网站把他copy下来,想想有点坏了,接着把内容改改吧.首先开始做一个列表展示vue实例好后,给对象添加默认数 ...

  5. 开源 java CMS - FreeCMS2.3会员我的留言

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/29631.html​ 项目地址:http://www.freeteam.cn/ 我的留言 从 ...

  6. Qt中重绘制窗口方法:

    void CircleWidget::paintEvent(QPaintEvent * event) { QPainter painter(this); int wight = this->wi ...

  7. synchronized的功能拓展:重入锁(读书笔记)

     重入锁可以完全代替synchronized关键字.在JDK5.0的早期版本中,重入锁的性能远远好于synchronized,但是从JDK6.0开始.JDK在synchronized上做了大量的优化. ...

  8. vue相关知识点

    1.el-date-picker输入的时间范围需要两点 A.禁用键盘输入 :editable=false,否则虽然禁用,但是输入框还能输入 B.指定时间范围::picker-options=" ...

  9. PHP结巴程序实现

    <?php $str="我...我要要要...学学学..编编程"; $str=preg_replace('/\./','',$str);//我我要要要学学学编编程 $str= ...

  10. 自定义HttpReqeust,解决request请求参数只能拿一次就失效的问题

    定义一个过滤器并实现如下方法 @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResp ...