学习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. python查询mangodb

    from bson.objectid import ObjectId import pymongo   #查询代码 #连接本机mongodb conn=pymongo.Connection() #指定 ...

  2. nginx+tomcat负载使用

    Nginx+Tomcat搭建 版本 操作系统版本 Centos 6.4 Nginx版本 nginx-1.3.15.tar.gz JDK版本 jdk-7u71-linux-i586   //jdk1.7 ...

  3. mysql语法语句

    将一个字段中的timestamp修改成可视化时间 update table set f1 = IF( LOCATE('-',f1)>0, f1, IFNULL(FROM_UNIXTIME(f1/ ...

  4. Node应用的Systemd启动(转)

    作者: 阮一峰 日期: 2016年3月12日 前面的文章介绍了 Systemd 的操作命令和基本用法,今天给出一个实例,如何使用 Systemd 启动一个 Node 应用. 本文是独立的,不需要前面的 ...

  5. 使用MySQL正则表达式 __MySQL必知必会

    正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持 ...

  6. Camera图像处理原理及实例分析

    Camera图像处理原理及实例分析 作者:刘旭晖  colorant@163.com  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...

  7. ES6里的解构赋值

    我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 一.引入背景 在ES5中,开发者们为 ...

  8. PHP Warning: 的解决方法

    在后台管理,用header("location:");做返回时,总是不能正常返回, Warning: Cannot modify header information - head ...

  9. 倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 24.0怎么办

    24.0 位置偏差过大保护   读取驱动器参数之后,在基本的014项目把设定值设置为最大,然后点击传送,EEP写入驱动器后重启驱动器即可     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空 ...

  10. spring拦截器不拦截方法名原因

    开发一个基于注解的登录拦截器,遇到拦截器只能拦截controller不能拦截到具体的方法名,这样拦截器就完全没用,经过仔细摸索,DefaultAnnotationHandlerMapping和Anno ...