• 【大数据-HBase】HBase根据rowKey模糊查询


    根据rowKey作为过滤条件查询HBase,需要用到过滤器RowFilter

    RowFilter属于比较过滤器的一种,比较过滤器继承自CompareFilter。创建一个比较过滤器需要传入两个参数,分别是比较运算符比较器

    一、需求背景

    车联网项目离线数据分析,采用Spark做分析引擎,数据源是HBase。rowKey设计为vin&collectTime,每天取前一天的增量数据作分析统计。

    解决思路:根据yyyyMMdd模糊查询获取某一天的数据。

    注:

    HBase由其他部门设计,我们只负责读,所以这里不讨论修改rowKey和表结构的情况。

    vin:车辆识别号码
    collectTime:yyyyMMddHHmmss
    

    二、代码实现

    查询20200701的数据

    1. 使用正则表达式来匹配rowKey

    比较运算符:CompareOp.EQUAL

    比较器:RegexStringComparator

    Scan scan = new Scan();
    RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator(".*20200701.*"));
    scan.setFilter(rowFilter);
    
    ResultScanner scanner = table.getScanner(scan);
    
    1. 使用子串匹配

    比较运算符:CompareOp.EQUAL

    比较器:SubstringComparator

    Scan scan = new Scan();
    RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new SubstringComparator("20200701"));
    scan.setFilter(rowFilter);
    
    ResultScanner scanner = table.getScanner(scan);
    
  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/yangyh11/p/13336330.html
Copyright © 2020-2023  润新知