zoukankan      html  css  js  c++  java
  • 【原创】HBase中查询优化小点

    HBase过滤器(fliter)提供了非常强大的特性来帮助用户提高其处理表中数据的效率。用户不仅可以使用HBase中预定义好的过滤器,而且可以实现自定义的过滤器。

    在对于HBase集群数据库的查询中即用到了以下几种过滤器:(行键:时间、监测点、车牌号)

    1)根据where中的时间条件限制,使用scan.setStartRow();scan.setStopRow();指定本次查询的起始行键范围;

    这种方法的使用比下面同样是对于时间过滤的用法快好多好多,

    List<Filter> filters = new ArrayList<Filter>();  //过滤器存放

    Filter filter1 = new SingleColumnValueFilter(cfs[0].getNameAsString().getBytes(),
    pojo.getRECORDTIME().getBytes(), CompareOp.GREATER_OR_EQUAL,
    Bytes.toBytes(stime)); // 当列rTime的值为2012-12-16 00:00:10时进行查询
    filters.add(filter1);

    Filter filter2 = new SingleColumnValueFilter(cfs[0].getNameAsString().getBytes(),
    pojo.getRECORDTIME().getBytes(), CompareOp.LESS_OR_EQUAL,
    Bytes.toBytes(etime)); // 当列rTime的值为2012-12-16 00:00:10时进行查询
    filters.add(filter2);

    2)用到了SingleColumnValueFilter用于实现对于记录中某一列中的过滤,即用一列的值决定是否一行数据被过滤;

    3)使用scan.addColumn获取结果记录中的某一列;

    4)为了满足使用多个过滤器共同限制返回到客户端的结果,使用FilterList(过滤器列表)实现组合多个过滤器的功能来实现某种效果。

    5hbase.client.scanner.caching配置项可以设置HBase scanner一次从服务端抓取的数据条数,默认情况下一次一条。通过将其设置成一个合理的值,可以减少scan过程中next()的时间开销。数据管理平台中使用了scan.setCaching(1000),即当结果记录总数少于等于1000时一次返回,大于1000时一次返回1000

  • 相关阅读:
    Mac Pro 安装 Sublime Text 2.0.2,个性化设置,主题 和 插件 收藏
    Mac Pro 编译安装 Nginx 1.8.1
    Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)
    Mac Pro 修改主机名
    Mac Pro 软件安装/个性化配置 汇总
    Mac Pro 安装 Homebrew 软件包管理工具
    Mac Pro 使用 ll、la、l等ls的别名命令
    Mac Pro 入门、遇到的问题、个性化设置 汇总
    Linux/UNIX线程(2)
    工作流引擎activiti入门
  • 原文地址:https://www.cnblogs.com/nanxin521/p/4402649.html
Copyright © 2011-2022 走看看