做有温度的教育!
全国统一咨询热线:400-803-9399
北京
校区
新闻资讯> 学习心得> Hbase查询小结——小范围,正则过滤

Hbase查询小结——小范围,正则过滤

时间:2018-07-25
浏览:5635
发布:甲骨文华育兴业
赞:294

  在大数据开发中Hbase查询是有技巧的,小编在网上找了些技巧,下面大家跟随文章的作者一起学习经验把!

最近在做大数据分析结果的展示。宗旨:存进去,取出来,看似简单其实不易。经过这几天的不懈努力终于找到了中上等的hbase key的设计方式。

  key的设计:时间+类型一+类型二+(long的最大值-此条数据的value)+……

  查询代码:

  /**

  * 根据startRowKey和endRowKey筛选出区间,然后根据regxKey正则匹配和num查出最终的结果

  * @param tableName 表名

  * @param startRowKey 开始的范围

  * @param endRowKey 结束的范围

  * @param regxKey 正则匹配

  * @param num 查询的条数

  * @return List

  */public ListgetNumRegexRow(String tableName,String startRowKey,String endRowKey, String regxKey,int num) {

  HTableInterface table = null;

  Listlist = null;

  try {

  table = hTablePool.getTable(tableName) ;

  //创建一个过滤器容器,并设置其关系(AND/OR)

  FilterList fl = new FilterList(FilterList.Operator.MUST_PASS_ALL);

  //设置正则过滤器

  RegexStringComparator rc = new RegexStringComparator(regxKey);

  RowFilter rf = new RowFilter(CompareOp.EQUAL, rc);

  //过滤获取的条数

  Filter filterNum = new PageFilter(num);//每页展示条数

  //过滤器的添加

  fl.addFilter(rf);

  fl.addFilter(filterNum);

  Scan scan = new Scan();

  //设置取值范围

  scan.setStartRow(startRowKey.getBytes());//开始的key

  scan.setStopRow(endRowKey.getBytes());//结束的key

  scan.setFilter(fl);//为查询设置过滤器的list

  ResultScanner scanner = table.getScanner(scan) ;

  list = new ArrayList() ;

  for (Result rs : scanner) {

  list.add(rs) ;

  }

  } catch (Exception e) {

  e.printStackTrace() ;

  }

  finally

  {

  try {

  table.close() ;

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  return list;

  · }

  进行测试举例:

  Listlist = hbaseUtil.getNumRegexRow("student","201611241440vmhardware.disk.read.bps","201611241440vmhardware.disk.read.bpsA","201611241440vmhardware\\.disk\\.read\\.bps.*",100);

  · 1

  原理:

  ①hbase会根据key值进行默认排序,所以我们的数据会按先照时间排序,然后再按照类型一排序,再按照类型二排序,再按照value从大到小(你应该懂得~~)的方式排序。

  ②范围201611241440vmhardware.disk.read.bps到201611241440vmhardware.disk.read.bpsA是因为A比任意一个数字都大

  ③201611241440vmhardware\.disk\.read\.bps.*代表你要根据需求拼成的正则表达式

  ④100则是你所要取的数据的个数(从大到小)。


人生从业之路的第一步,从甲骨文华育兴业开始,

背后付出的辛苦与努力只有自己知道,而这也只是他们职业生涯的开始。

勤恳努力的人终会得到最好的回报,有些努力需要时间来回答

你吃的苦终会铺成你想要的路!

甲骨文华育兴业,为你的IT之路开启梦想之门!


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关。


【AI大数据】2019年AI数据5大趋势 ps使用 大数据 冲刺Java架构师年薪50W

友情链接: 甲骨文华育兴业太原校区 甲骨文华育兴业济南校区 甲骨文华育兴业哈尔滨校区 甲骨文华育兴业北京校区 魔据教育

Copyright ©2016-2019. All Rights Reserved. 京ICP备17018991号-4

网站地图