`
sunasheng
  • 浏览: 122861 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hbase过滤器

 
阅读更多

1.SingleColumnValueFilter

各个条件之间是且的关系:

 

public static void setAndFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
        for (String v : array) { // 各个条件之间是“且”的关系
           String[] s = v.split(",");
		   filterList.addFilter(new SingleColumnValueFilter(Bytes
	               .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL, 
	               Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

 各个条件之间是或的关系:

 public static void setOrFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(
                FilterList.Operator.MUST_PASS_ONE);
        for (String v : array) { // 各个条件之间是“或”的关系
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

 各个条件之间是且的关系,值大于:

public static void setGreatFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]),
                    CompareOp.GREATER, Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

  各个条件之间是且的关系,值大于等于:

public static void setGreatOrEqualFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]),
                    CompareOp.GREATER_OR_EQUAL, Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是且的关系,值包含在内:

public static void setIncludeFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
        for (String v : array) { // 各个条件之间是“且”的关系
           String[] s = v.split(",");
 		   filterList.addFilter(new SingleColumnValueFilter(Bytes
 	               .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.EQUAL, 
 	               new SubstringComparator(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是且的关系,值不等于:

public static void setOutFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.NOT_EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

   各个条件之间是或的关系,值不等于:

public static void setOutFilter(Scan scan, List<String> array) {
        FilterList filterList = new FilterList();
        for (String v : array) { 
            String[] s = v.split(",");
            filterList.addFilter(new SingleColumnValueFilter(Bytes
                    .toBytes(s[0]), Bytes.toBytes(s[1]), CompareOp.NOT_EQUAL,
                    Bytes.toBytes(s[2])));
        }
        scan.setFilter(filterList);
    }

使用方法:

List<String> array = new ArrayList<String>();
array.add("action,event,情景");
array.add("action,label,点击item");
HBaseManager.setAndFilter(scan, array);
		
		
	

 

分享到:
评论

相关推荐

    Hadoop学习四十二:HBase 过滤器

    HBase过滤器允许我们在读取数据时对结果进行筛选,减少不必要的I/O操作,从而提高效率。它们是通过实现`Filter`接口来定义的,并在扫描器(Scanner)执行时应用。HBase提供了多种内置过滤器,如...

    Hbase过滤器详解.md

    Hbase过滤器详解,基础篇

    hbase过滤器简单教程

    过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤,基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有过滤器条件的 RPC 查询请求会把过滤器分发到各个...

    Hbase shell及常用命令

    HBase过滤器可以根据条件过滤数据。例如,使用RowFilter过滤器来过滤Student表中的数据: scan 'Student', FILTER =&gt; "RowFilter(=, 'binary:0001')" HBase行键过滤器 ------------------ HBase行键过滤器用于...

    java操作Hbase之Hbase专用过滤器PageFilter的使用源代码

    HBase提供了多种过滤器机制,其中PageFilter是一种非常实用的工具,它可以帮助我们在查询时限制返回的结果数量,从而优化性能和内存使用。下面我们将深入探讨PageFilter的使用方法,并通过源代码示例来解释其工作...

    java操作Hbase之比较过滤器RowFilter的使用源码

    本文将深入探讨HBase的比较过滤器RowFilter的使用源码,帮助你理解如何在实际项目中应用这一关键功能。 RowFilter是HBase提供的过滤器之一,它允许我们根据行键(row key)来过滤表中的数据。在Java API中,我们...

    HBase Java 编程-v2.pdf

    #### HBase过滤器 - **ColumnPrefixFilter**:介绍如何使用ColumnPrefixFilter来根据列前缀筛选数据。这种过滤器适用于当需要基于列名前缀来检索数据的场景。 - **FamilyFilter**:讲解FamilyFilter的使用方法,这...

    HBaseHelper Hbase增删改查帮助类

    `HbaseCusFilter.java`文件可能包含自定义的HBase过滤器,这是HBase查询机制的一个重要部分。通过继承HBase的Filter接口,我们可以编写自己的过滤逻辑,以实现更复杂的查询需求。 `App.java`可能是主应用程序类,它...

    Hbase布隆过滤器详解

    布隆过滤器是一种高效的空间节约型数据结构,用于判断一个元素是否可能存在于一个大型集合中。它由布隆于1970年提出,主要利用了位数组和多个哈希函数来实现。基本思想是通过将元素经过多个独立的哈希函数映射到一个...

    大数据 76 道面试题及答案.docx

    HBase过滤器可以增强HBase查询数据的功能,减少服务端返回给客户端的数据量。过滤器的父类有比较过滤器、专用过滤器等。 MapReduce掌握情况 MapReduce掌握情况可以通过测试MapReduce掌握情况和Hive的QL语言掌握...

    HBASE使用注意事项

    通过对HBase的使用注意事项进行深入分析,我们了解到在表设计阶段应当重视RowKey的设计及其对数据分布的影响,同时还需要考虑压缩算法、过滤器的选择以及版本控制等因素。此外,对于Java API的使用也需要注意资源...

    Hbase数据库界面管理器

    3. 查询过滤:支持多种过滤器查询是HBase数据库界面管理器的一大亮点。用户可以使用行键、列族、列限定符和时间戳等条件组合,构建复杂的查询语句,快速定位所需数据。 4. 导入导出:工具提供数据导入和导出功能,...

    HBase视频教程下载|基于微博数据应用的HBase实战开发

    课时8:过滤器实战之专用过滤器与FilterList 课时9:过滤器实战之自定义过滤器 课时10:Observer协处理器实战之Master级别原理剖析 课时11:Observer协处理器实战之Region级别原理剖析 课时12:Observer协处理器...

Global site tag (gtag.js) - Google Analytics