HBase 比较过滤器

╰半橙微兮° 2022-05-14 02:10 284阅读 0赞

一、行过滤器(RowFilter)

  1. /**
  2. * 测试RowFilter过滤器
  3. */
  4. @Test
  5. public void testRowFilter() throws IOException {
  6. Configuration conf = HBaseConfiguration.create();
  7. Connection conn = ConnectionFactory.createConnection(conf);
  8. TableName tname = TableName.valueOf("ns1:t1");
  9. Scan scan = new Scan();
  10. RowFilter rowFilter = new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("row0003")));
  11. scan.setFilter(rowFilter);
  12. Table t = conn.getTable(tname);
  13. ResultScanner resultScanner = t.getScanner(scan);
  14. for(Result res :resultScanner){
  15. System.out.println(Bytes.toString(res.getRow()));
  16. }
  17. }

二、列族过滤器(FamilyFilter)

使用过滤器来返回特定的列族

  1. /**
  2. * 测试FamilyFilter过滤器
  3. */
  4. @Test
  5. public void testFamilyFilter() throws IOException {
  6. Configuration conf = HBaseConfiguration.create();
  7. Connection conn = ConnectionFactory.createConnection(conf);
  8. TableName tname = TableName.valueOf("ns1:t1");
  9. Scan scan = new Scan();
  10. FamilyFilter filter = new FamilyFilter(CompareFilter.CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("f1")));
  11. scan.setFilter(filter);
  12. Table t = conn.getTable(tname);
  13. ResultScanner resultScanner = t.getScanner(scan);
  14. for(Result result:resultScanner){
  15. System.out.println(result);
  16. }
  17. }

三、列名过滤器(QualifierFilter)

  1. /**
  2. * 测试QualifierFilter过滤器
  3. */
  4. @Test
  5. public void testQualifierFilter() throws IOException {
  6. Configuration conf = HBaseConfiguration.create();
  7. Connection conn = ConnectionFactory.createConnection(conf);
  8. TableName tname = TableName.valueOf("ns1:t1");
  9. Scan scan = new Scan();
  10. Filter filter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes("name")));
  11. scan.setFilter(filter);
  12. Table t = conn.getTable(tname);
  13. ResultScanner resultScanner = t.getScanner(scan);
  14. for(Result result:resultScanner){
  15. System.out.println(result);
  16. }
  17. }

四、值过滤器(ValueFilter)

  1. /**
  2. * 测试ValueFilter过滤器
  3. */
  4. @Test
  5. public void testValueFilter() throws IOException {
  6. Configuration conf = HBaseConfiguration.create();
  7. Connection conn = ConnectionFactory.createConnection(conf);
  8. TableName tname = TableName.valueOf("ns1:t1");
  9. Scan scan = new Scan();
  10. Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes("tom111")));
  11. scan.setFilter(filter);
  12. Table t = conn.getTable(tname);
  13. ResultScanner resultScanner = t.getScanner(scan);
  14. for(Result result:resultScanner){
  15. for(Cell cell:result.rawCells()){
  16. System.out.println("cell: " +cell+" ,Value: "+Bytes.toString(CellUtil.cloneValue(cell)));
  17. }
  18. }
  19. }

发表评论

表情:
评论列表 (有 0 条评论,284人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA操作HBase过滤器

    HBase中可以根据Filter进行高效过滤,基于Hbase本身提供的三维有序(主键有序、列有序、版本有序),这些Filter可以高效的完成查询过滤的任务。带有Filter条件

    相关 Hbase(四) 过滤器查询

    引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器 过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端; 一、hba