




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hbase葱岭探秘-过滤器ApiHbase中提供了许多的过滤器接口,以此来对数据进行过滤,使得查询出想要的数据。行过滤器针对行信息进行过滤,参数中可以采用前缀匹配、按位与、或、异或以及子串匹配等匹配的方式。同时可以控制EQUAL、NOT_EQUAL选项进行控制筛选数据的条件。/* * 行过滤器 BinaryComparator NullComparator:是不是空值 * BitComparator:通过BitwiseOp类提供的按位与、或、异或操作进行位级别比较 RegexStringComparator:正则匹配 * SubStringComparator:子串是不是包含进行匹配 */ private static void testRowFilter() try HTable table = new HTable(config, testtable); Scan scan = new Scan(); scan.addColumn(col1.getBytes(), name.getBytes(); / 行过滤器 Filter filter = new RowFilter(CompareOp.EQUAL, new BinaryComparator(row2.getBytes(); scan.setFilter(filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (行过滤器 + res); / 正则的行过滤器 Filter filter2 = new RowFilter(CompareOp.EQUAL, new RegexStringComparator(.*.2); scan.setFilter(filter2); ResultScanner resultRegx = table.getScanner(scan); for (Result res : resultRegx) (正则 + res); Filter filterSubString = new RowFilter(CompareOp.EQUAL, new SubstringComparator(w2); scan.setFilter(filterSubString); ResultScanner resultSubString = table.getScanner(scan); for (Result res : resultSubString) (子串 + res); table.close(); catch (IOException e) log.error(e); 列族过滤器根据列族的数据进行筛选,形式和上面的行过滤器类似,通过控制相应的参数中的筛选的条件进行相应的筛选。/* * 列族过滤器 */ private static void testFamlyFilter() try HTable table = new HTable(config, testtable); Filter filter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(col1.getBytes(); Scan scan = new Scan(row2.getBytes(), filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (res); Filter filterNull = new FamilyFilter(CompareOp.EQUAL, new RegexStringComparator(.*.1); Scan scanNull = new Scan(row2.getBytes(), filterNull); scanNull.addFamily(col1.getBytes(); ResultScanner resultNull = table.getScanner(scanNull); if (resultNull != null) for (Result res : resultNull) (res); else (null); table.close(); catch (IOException e) log.error(e); 列名过滤器和上面几个过滤器类似,这里是根据列进行筛选,设置相应的条件后就可以进行相应的筛选了。/* * 列名过滤器 */ public static void testColumFilter() try HTable table = new HTable(config, testtable); Filter filter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(name.getBytes(); Scan scan = new Scan(row2.getBytes(), filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (res); Get get = new Get(row2.getBytes(); get.setFilter(filter); Result resultGet = table.get(get); (resultGet); table.close(); catch (IOException e) (e); 参考列过滤器根据列族和列限定符进行筛选,返回与参考列相同时间戳的行的所有键值对。/* * 参考列过滤器 */ public static void testDependentColumnFilter() try HTable table = new HTable(config, testtable); Filter filter = new DependentColumnFilter(col1.getBytes(), name.getBytes(), false); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner resu = table.getScanner(scan); for (Result result : resu) (result); Get get = new Get(row2.getBytes(); get.setFilter(filter); Result result = table.get(get); (result); table.close(); catch (IOException e) log.error(e); 单列过滤器通过一列的值进行判断是不是需要进行过滤。/* * 单列过滤器 */ public static void testSingleColumnValueFilter() try HTable table = new HTable(config, testtable); Filter filter = new SingleColumnValueFilter(col1.getBytes(), name.getBytes(), CompareOp.EQUAL, wy.getBytes(); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (res); Get get = new Get(row2.getBytes(); get.setFilter(filter); Result resultGet = table.get(get); (resultGet); table.close(); catch (IOException e) (e); 前缀过滤器根据前缀进行匹配行键的数据,本例中给出的是以row为前缀的行的数据。/* * 前缀过滤器 */ public static void testPrefixFilter() try HTable table = new HTable(config, testtable); Filter filter = new PrefixFilter(row.getBytes(); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (res + res); Get get = new Get(row2.getBytes(); Result resultGet = table.get(get); (get + resultGet); table.close(); catch (IOException e) (e); 分页过滤器通过pageFilter设置一页中数据的条数,注意,在重新设置起始行的时候,要使得新的行和数据库中有区别,否则,会死循环无法停止。/* * 分页过滤器 */ public static void testPageFilter() try HTable table = new HTable(config, testtable); Filter filter = new PageFilter(10); int totalRows = 0; byte lastRow = null; Scan scan = new Scan(); while (true) scan.setFilter(filter); if (lastRow != null) / 加上0后表示新的开始防止row的内容一样造成死循环 byte startRow = Bytes.add(lastRow, POSTFIX); scan.setStartRow(startRow); ResultScanner resultScan = table.getScanner(scan); int localRows = 0; Result result = resultScan.next(); while (result != null) (result); localRows+; totalRows+; lastRow = result.getRow(); result = resultScan.next(); if (localRows = 0) break; (totalRows); table.close(); catch (IOException e) (e); /* * 列分页过滤 */ public static void testColumnPaginationFilter() try HTable table = new HTable(config, testtable); Filter filter = new ColumnPaginationFilter(5, 10); Scan scan = new Scan(); scan.setFilter(filter); ResultScanner result = table.getScanner(scan); for (Result res : result) (res); table.close(); catch (IOException e) (e); Skip过滤器与ValueFilter结合使用,如果一行中某一列不符合要求的话直接被过滤掉。/* * 跳过过滤器 */ public static void testSkipFilter() try HTable table = new HTable(config, testtable); Filter filt = new ValueFilter(CompareOp.NOT_EQUAL, new BinaryComparator(v.getBytes(); Scan scanValue = new Scan(); scanVFilter(filt); ResultScanner ress = table.getScanner(scanValue); for (Result result : ress) ( + res); table.close(); catch (IOException e) (e); 全匹配过滤器在遇到某个条件之前的数据全部查询出来,直到遇到满足该条件的数据之后结束查询。 /* * 全匹配过滤器 */ public static void testWhileMatch() try HTable table = new HTable(config, testtable); Filter filt = new RowFilter(CompareOp.NOT_EQUAL, new BinaryComparator(row6.getBytes(); Scan scan = new Scan(); scan.setFilter(filt); ResultScanner results = table.getScanner(scan); for (Result res : results) ( + res); Filter filter = new WhileMatchFilter(filt); scan.setFlter(filter); ResultScanner resultScan = table.getScanner(scan); for (Result res : resultScan) ( + res); table.close(); catch (IOException e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025国家基础地理中心招聘工作人员(北京)考前自测高频考点模拟试题及完整答案详解1套
- 2025建融金服(河南)科技服务有限公司甘肃分公司招聘30人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025贵州黔东南州台江县民族中医院第二次长期招聘备案制专业技术人员1人模拟试卷及答案详解(历年真题)
- 2025内蒙古能源集团所属单位招聘30人模拟试卷完整答案详解
- 档案证考试题库及答案
- 动物生物考试题库及答案
- 师范认定考试题库及答案
- 安全教育培训云平台课件
- 电焊工考试题及答案题库
- 2025年新疆汽车销售奖励合同范本
- NB-T+35056-2015-水电站压力钢管设计规范
- 2024年垃圾分类知识考试题库及答案
- 集成电路制造工艺原理集成电路制造工艺原理模板
- 访学归来讲座课件
- 平行四边形的面积集体备课发言稿
- 大学美育(第二版) 课件 第八单元:建筑艺术
- 《肠造口术后并发症护理研究进展综述》7400字
- 学校食堂食品安全主体责任
- 建设用地报批服务投标方案(技术方案)
- 压力容器制造(A2、D级)许可鉴定评审细则
- 2023年诗词诵读技能比赛考试题库(500题版)
评论
0/150
提交评论