`
韩悠悠
  • 浏览: 844928 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hbase学习笔记6-过滤器

 
阅读更多

 

Hbase在操作数据中的基本的API,包括增删查。增删都是相对简单的操作,与传统的RDBMS相比,这里的查询操作略显苍白,只能根据特定的主键查询(Get)或者根据主键的一个范围来查询(Scan)。Hbase提供了更加高级的过滤器来查询,当然还有另外一些高级的模块,我们将在这一篇里看到。

 

 

 

一、过滤器(Filter

 

    基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:FilterFilter可以根据簇、列、版本等更多的条件来对数据进行过滤,基于Hbase本身提供的三维有序(主键有序、列有序、版本有序),这些Filter可以高效的完成查询过滤的任务。带有Filter条件的RPC查询请求会把Filter分发到各个RegionServer,是一个服务器端(Server-side)的过滤器,这样也可以降低网络传输的压力。

 

    要完成一个过滤的操作,至少需要两个参数。一个是抽象的操作符,Hbase提供了枚举类型的变量来表示这些抽象的操作符:LESS/LESS_OR_EQUAL/EQUAL/NOT_EUQAL等;另外一个就是具体的比较器(Comparator),代表具体的比较逻辑,如果可以提高字节级的比较、字符串级的比较等。有了这两个参数,我们就可以清晰的定义筛选的条件,过滤数据。

 

 

 

CompareFilterCompareOp compareOp WritableByteArrayComparable valueComparator

 

 

 

   CompareFilter是高层的抽象类,下面我们将看到它的实现类和实现类代表的各种过滤条件。这里实现类实际上代表的是参数中的过滤器过滤的内容,可以使主键、簇名、列值等,这就是由CompareFilter决定了。

 

 

 

 

 

    行过滤器(RowFilter

 

    行过滤器的比较对象是行主键

 

Scan scan = new Scan();

 

Filter filter1 = new RowFilter(CompareFIlter.CompareOp.LESS_OR_EUQAL, new BinaryComparator(Bytes.toBytes("hello")));

 

scan.setFilter(filter1);

 

scan.close();

 

 

 

例中的Filter会将所有的小于等于“Hello”的主键过滤出来。

 

 

 

    簇过滤器(FamilyFilter

 

    簇过滤器过滤的是簇的名字。

 

 

 

    列过滤器(QualifierFilter

 

    列过滤器过滤的是列的名字。

 

 

 

    值过滤器(ValueFilter

 

    值过滤器过滤的是扫描对象的值。

 

 

 

    单值过滤器(SingleColumnValueFilter

 

    单值过滤器是以特定列的值为过滤内容,与值过滤器不同的是,这里是特定的列,而值过滤器比较的是行内的所有列。所有在使用单值过滤器的时候要指定比较的列的坐标。

 

SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareOp compareOp, WritableByteArrayComparable comparator)

 

 

 

对于找不到该列的行,可以有特殊的处理 

 

 

 

void setFilterIfMissing(boolean filterIfMissing)

 

 

 

默认缺省行将被包含进过滤的结果集中。

 

 

 

    前缀过滤器(PrefixFilter

 

    前缀过滤器将会过滤掉不匹配的记录,过滤的对象是主键的值。

 

 

 

 

 

PrefixFilter(byte[] prefix)

 

页过滤器(PageFilter

 

    页过滤器可以根据主键有序返回固定数量的记录,这需要客户端在遍历的时候记住页开始的地方,配合scanstartkey一起使用。

 

PageFilter(int size)

 

 

 

键过滤器(KeyOnlyFilter

 

    键过滤器可以简单的设置过滤的结果集中只包含键而忽略值,这里有一个选项可以把结果集的值保存为值的长度。

 

 

 

    FirstKeyOnlyFilter

 

    在键过滤器的基础上,根据列有序,只包含第一个满足的键。

 

 

 

    ColumnPrefixFilter

 

    这里过滤的对象是列的值。

 

 

 

    TimestampsFilter

 

TimestampsFilter(List<Long> times)

 

  这里参数是一个集合,只有包含在集合中的版本才会包含在结果集中。

 

 

 

    包装类过滤器,此类过滤器要通过包装其他的过滤器才有意义,是其他过滤器的一种加强。

 

    SkipFilter

 

SkipFilter(Filter filter)

 

 

 

过滤器集合(FilterList

 

    Hbase的过滤器设计遵照于设计模式中的组合模式,以上的所有过滤器都可以叠加起来共同作用于一次查询。

 

分享到:
评论

相关推荐

    hbase学习笔记

    - `bloomFilter`和`scope`: 分别是布隆过滤器类型和列的复制范围。 5. **HBase Shell常用命令**: HBase Shell提供了与HBase交互的命令行工具,包括创建表、删除表、插入数据、查询数据等操作。例如: - `create...

    Hbase课程资料笔记,介绍、原理、入门实操.zip

    3. **查询数据**: 使用Get操作根据行键获取数据,或Scan操作进行范围查询,还可以通过过滤器进一步筛选结果。 4. **更新与删除数据**: 更新数据通常是插入新版本,删除数据则可以通过Delete操作指定行键、列族、列...

    hbase简介共8页.pdf.zip

    6. **实时查询和性能优化**:HBase支持的过滤器、扫描器,以及如何通过索引和布隆过滤器提升查询性能。 7. **监控和故障恢复**:使用HBase的监控工具监控系统状态,以及如何处理Region Server故障。 8. **实战应用**...

    源码笔记资料(1).zip

    总结,这份资料集为学习和使用HBase提供了一条清晰的路径,从基础安装到源码解析,再到实战演练,覆盖了HBase学习的全过程。通过深入学习,你可以更好地驾驭这个强大的大数据存储系统,应对日益增长的数据处理需求。

    HBaseClientDemo

    通过阅读“HBase java api学习笔记.docx”,你将进一步了解这些概念和API的使用细节,结合“HBaseClientDemo”进行实践,将有助于加深对HBase客户端操作的理解。在大数据处理和分析项目中,熟练掌握HBase Java API...

    2018-云笔记项目收获-word范文 (5页).pdf

    这需要掌握数据挖掘、机器学习算法如协同过滤或基于内容的推荐。 5. **安全性与隐私保护**:云笔记的私有笔记管理可能采用了权限控制和加密技术,确保用户数据的安全和私密性。例如,使用OAuth2.0进行身份验证,或...

    源码笔记资料.zip

    2. **扫描器(Scanner)**:用于高效地批量读取数据,可以根据条件进行数据过滤。 3. **Compaction**:HBase定期进行合并操作(Minor Compaction和Major Compaction),减少文件碎片并优化空间利用率。 4. **...

    大数据技术之Flume笔记

    在大数据处理中,Flume 作为数据收集器扮演着关键角色,它能够从各种数据源高效地抽取数据,然后将这些数据传输到存储系统或者分析工具中,如Hadoop HDFS或Kafka。本笔记将深入探讨Flume的核心概念、配置和实际应用...

    spark笔记整理,2022年3月16日

    本笔记整理主要涵盖了2022年3月16日的学习内容,旨在深入理解和掌握Spark的核心概念和功能。 Spark的核心理念是内存计算,它通过将数据存储在内存中,从而减少了磁盘I/O,提高了数据处理速度。这一特性使得Spark比...

Global site tag (gtag.js) - Google Analytics