前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HBase之比较过滤器

HBase之比较过滤器

作者头像
YungFan
发布2018-05-03 15:03:37
2K0
发布2018-05-03 15:03:37
举报
文章被收录于专栏:学海无涯

最近在学习Hadoop中的HBase,通过本次实验,可以理解比较过滤器,能够掌握并运用。主要包含行比较过滤器和列族比较过滤器实验。在进行实验之前需要导入HBase项目包,然后在这个项目下面创建package和class。

项目准备

  • 进入desktop,打开eclipse。
  • 打开eclipse后,点击Open Perspective:

Eclipse

选中Java,然后点击OK:

Open Perspective

  • 导入Hbase项目,如下图:
    • 在左边的空白处点击右键,选择import:

    import1

    • 双击General,选中Existing Projects into Workspace,然后点击Next:

    import2

    • 点击Browser....:

    import3

    • 选中HBase,然后点击OK:

    import4

    • 点击Finish:

    import5

  • 在HBase项目下面创建相应的Package和Class。 给第一个程序实验创建一个名为Filter的package、名为Rowfilter的class。给第二个程序实验在名为Filter的package下创建名为Familyfilter的class。

完成以上操作后,便可以开始编写运行HBase程序了。

实验内容

比较过滤器CompareFilter

比较过滤器是一种专门的用于比较的过滤器,通过实现比较运算符与比较器,来实现用户的需求。

  • 比较过滤器中的比较运算符如下:

操作

描述

LESS

匹配小于设定值的值

LESS_OR_EQUAL

匹配小于或等于设定值的值

EQUAL

匹配等于设定值的值

NOT_EQUAL

匹配与设定值不相同的值

GREATER_OR_EQUAL

匹配大于或等于设定值的值

GREATER

匹配大于设定值的值

NOT_OP

排除一切值

  • 常用比较过滤器的比较器:

比较器

描述

BinaryComparator

按字节索引顺序比较指定字节数组,采用Bytes.compareTo(byte[])

BinaryPrefixComparator

跟上面相同,使用Bytes.compareTo()进行匹配,但是是从左端开始前缀匹配行过滤器RowFilter

NullComparator

判断给定的是否为空不做匹配,只判断当前值是不是null

BitComparator

通过BitwiseOp类提供的按位与(AND),或(OR),异或(XOR)操作执行位级比较

RegexStringComparator

根据一个正则表达式,在实例化这个比较器的时候去匹配表中数据

SubstringComparator

把阈值和表中数据当做String实例,同时通过contains()操作匹配字符串

1. 行比较过滤器实验RowFilter

该过滤器是基于行值(row)来过滤数据,不符合条件的row的行将要被过滤掉。行键和行值需要进行区分:

行值(row):在一行数据中,其row值是一行中的唯一标示。 行键(Key):在HBase底层存储中,数据都是以KeyValue对象的形式存在,而在KeyValue对象中,Key包含了一个单元格的row、columnfamily、column、timestamp、type 几个重要的信息,type有四种类型,分别是Put、Delete、 DeleteColumn和DeleteFamily。而Value中只有单元格真实的数据。也就是说Key是不包含value,但包含row的。

  • 目的

通过代码实现行比较过滤器的调用,这里是匹配“emp”表中行键大于等于“2”、并且扫描范围为列族personal data下面的列city的行,并将相关信息打印到控制台。

  • 核心代码

核心代码

以上代码是在创建configuration实例,创建表连接,创建过滤器,设置过滤条件,设置比较器为BinaryComparator。并创建一个scan对象,设置scan的范围,将scan的结果进行Row过滤。

  • 查看结果

在控制台查看行过滤的结果,将匹配到的“emp”表格中行键大于等于2的、并且扫描范围为列族personal data下面的列city的行的数据进行显示。如下:

结果

其中,row为“2”,columnfamily为“personal data”,column为“city”,timestamp为“1498442651530”,type为“Put”,vlen即数据长度为7字节,seqid为“0”;row为“3”,columnfamily为“personal data”,column为“city”,timestamp为“1498442651555”,type为“Put”,vlen即数据长度为5字节,seqid为“0”。

2. 列族比较过滤器实验FamilyFilter

该过滤器是对列族进行过滤,即在获取数据过程中,不符合该过滤器条件的列族内的数据,全部被过滤掉。

  • 目的

通过代码实现列比较过滤器的调用,这里是匹配“emp”表中列族为“professional data”的列,并将相关信息打印到控制台。

  • 核心代码

核心代码

以上代码是在创建configuration实例,创建表连接,创建过滤器,设置过滤条件,设置比较器为BinaryComparator。并创建一个scan对象,将scan的结果进行列族过滤。

  • 查看结果

在控制台查看列族过滤的结果,将匹配到“professional data”的所有列的数据进行显示。如下:

结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目准备
  • 实验内容
    • 比较过滤器CompareFilter
      • 1. 行比较过滤器实验RowFilter
        • 2. 列族比较过滤器实验FamilyFilter
        相关产品与服务
        云数据库 HBase
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档