本文主要包含hbase安装,hbase单机安装,hbase集群安装,hbase下载安装,hbase windows安装等服务器相关知识,网友希望可以进行参考
HBase,hbase安装
博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 itdog8 地址链接 : http://www.itdog8.com/thread-214-1-1.html博文标题:HBase - Filter - 过滤器的介绍以及使用 | 那伊抹微笑
个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在
技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术
转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
qq交流群:214293307
(期待与你一起学习,共同进步)
1 过滤器 HBase 的基本 API,包括增、删、改、查等。 增、删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根据行键的范围来查询(Scan)。 HBase 不仅提供了这些简单的查询,而且提供了更加高级的过滤器(Filter)来查询。
1.1 过滤器的两类参数 过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤,基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有过滤器条件的 RPC 查询请求会把过滤器分发到各个 RegionServer(这是一个服务端过滤器),这样也可以降低网络传输的压力。 使用过滤器至少需要两类参数:
1.1.1 一类是抽象的操作符 HBase 提供了枚举类型的变量来表示这些抽象的操作符: LESS LESS_OR_EQUAL EQUAL NOT_EQUAL GREATER_OR_EQUAL GREATER NO_OP
1.1.2 另一类是比较器 代表具体的逻辑,例如字节级的比较,字符串级的比较等。
1.2 比较器 比较器作为过滤器的核心组成之一,用于处理具体的比较逻辑,例如字节级的比较,字符串级的比较等。
1.2.1 RegexStringComparator 支持正则表达式的值比较
Scan scan = new Scan(); RegexStringComparator comp = new RegexStringComparator("you."); // 以 you 开头的字符串 SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOp.EQUAL, comp); scan.setFilter(filter);
1.2.2 SubStringComparator 用于监测一个子串是否存在于值中,并且不区分大小写。
Scan scan = new Scan(); SubstringComparator comp = new SubstringComparator("1129"); // 查找包含 1129 的字符串 SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOp.EQUAL, comp); scan.setFilter(filter);
1.2.3 BinaryPrefixComparator 前缀二进制比较器。与二进制比较器不同的是,只比较前缀是否相同。
Scan scan = new Scan(); BinaryPrefixComparator comp = new BinaryPrefixComparator(Bytes.toBytes("yting")); // SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOp.EQUAL, comp); scan.setFilter(filter);
1.2.4 BinaryComparator 二进制比较器,用于按字典顺序比较 Byte 数据值。 Scan scan = new Scan(); BinaryComparator comp = new BinaryComparator(Bytes.toBytes("xmei")); // ValueFilter filter = new ValueFilter(CompareOp.EQUAL, comp); scan.setFilter(filter);
1.3 列值过滤器
1.3.1 SingleColumnValueFilter
SingleColumnValueFilter 用于测试值的情况(相等,不等,范围 、、、)
下面一个检测列族 family 下的列 qualifier 的列值和字符串 "my-value" 相等的部分示例代码 : Scan scan = new Scan(); SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOp.EQUAL, Bytes.toBytes("my-value")); scan.setFilter(filter);
1.3.2 SingleColumnValueExcludeFilter 跟 SingleColumnValueFilter 功能一样,只是不查询出该列的值。
下面的代码就不会查询出 family 列族下 qualifier 列的值(列都不会查出来) Scan scan = new Scan(); SingleColumnValueExcludeFilter filter = new SingleColumnValueExcludeFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOp.EQUAL, Bytes.toBytes("my-value")); scan.setFilter(filter);
1.4 键值元数据过滤器 HBase 采用 "键值对" 保存内部数据,键值元数据过滤器评估一行的 "键" 是否保存在(如 ColumnFamily:Column qualifiers)。
1.4.1 FamilyFilter 用于过滤列族(通常在 Scan 过程中通过设定某些列族来实现该功能,而不是直接使用该过滤器)。
Scan scan = new Scan(); FamilyFilter filter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("my-family"))); // 列族为 my-family scan.setFilter(filter);
1.4.2 QualifierFilter 用于列名(Qualifier)过滤。
Scan scan = new Scan(); QualifierFilter filter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("my-column"))); // 列名为 my-column scan.setFilter(filter);
1.4.3 ColumnPrefixFilter 用于列名(Qualifier)前缀过滤,即包含某个前缀的所有列名。
Scan scan = new Scan(); ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("my-prefix")); // 前缀为 my-prefix scan.setFilter(filter);
1.4.4 MultipleColumnPrefixFilter MultipleColumnPrefixFilter 与 ColumnPrefixFilter 的行为类似,但可以指定多个列名(Qualifier)前缀。
Scan scan = new Scan(); byte[][] prefixes = new byte[][]{Bytes.toBytes("my-prefix-1"), Bytes.toBytes("my-prefix-2")}; MultipleColumnPrefixFilter filter = new MultipleColumnPrefixFilter(prefixes); // 不解释,你懂的 、、、 scan.setFilter(filter);
1..4.5 ColumnRangeFilter 该过滤器可以进行高效的列名内部扫描。(为何是高效呢???因为列名是已经按字典排序好的)HBase-0.9.2 版本引入该功能。
Scan scan = new Scan(); boolean minColumnInclusive = true; boolean maxColumnInclusive = true; ColumnRangeFilter filter = new ColumnRangeFilter(Bytes.toBytes("minColumn"), minColumnInclusive, Bytes.toBytes("maxColumn"), maxColumnInclusive); scan.setFilter(filter);
1.6 DependentColumnFilter 该过滤器尝试找到该列所在的每一行,并返回该行具有相同时间戳的全部键值对。
Scan scan = new Scan();

