• 【原创】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

  • 相关阅读:
    1."问吧APP"客户需求调查分析
    “软件工程”课程的学习目标
    范式
    知乎:有哪些让你相见恨晚的 PPT 制作技术或知识?
    前端指南
    在网页中JS函数自动执行常用三种方法
    index的用法
    搜索引擎的正确姿势
    display与visibility
    bootstrap之模态框
  • 原文地址:https://www.cnblogs.com/nanxin521/p/4402649.html
Copyright © 2020-2023  润新知