




已阅读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年医学影像学专业考试试卷及答案
- 2025年信息社会与人类发展的关系考试试题及答案
- SCH-211803-生命科学试剂-MCE
- D-Glutamic-acid-13C5-15N-R-Glutamic-acid-sup-13-sup-C-sub-5-sub-sup-15-sup-N-生命科学试剂-MCE
- Bosutinib-13C-d3-SKI-606-sup-13-sup-C-sub-d-sub-3-sub-生命科学试剂-MCE
- 2025年气象科学专业考试试卷及答案
- 2025年计算机设计考试题及答案
- 2025年环境保护专业考试题及答案
- 2025年公务员考试申论写作技巧及试题答案
- 2025年公共体育与健身管理能力测试卷及答案
- 医保业务知识题库
- 等级医院评审中应注意的迎评礼仪
- 吉林省长春市东北师大附中明珠学校2023年物理八年级第二学期期末统考模拟试题含解析
- 【小升初】贵州省遵义市2022-2023学年人教版小学六年级下学期数学升学分班考测试卷(含解析)
- LD 52-1994气瓶防震圈
- GB/T 35351-2017增材制造术语
- GB/T 18268.1-2010测量、控制和实验室用的电设备电磁兼容性要求第1部分:通用要求
- FZ/T 93074-2011熔喷法非织造布生产联合机
- 小升初英语教学第一课课件
- 牵引供电系统课件
- 2023年上海市青浦区城管协管员招聘笔试题库及答案解析
评论
0/150
提交评论