程序员的自我修养
Home » Apache HBase » HBase Filter - Comparision Filters

HBase Filter - Comparision Filters

0条评论1,743次浏览

HBase的Get和Scan实例可以调用setFilter()来设置过滤器,HBase的过滤器种类繁多,以满足不同的过滤需求。Filter作用于各个RegionServer,通过使用过滤器可以高效的获取数据。HBase Filter主要分为三大类,用户也可以通过继承FilterBase或实现Filter接口来自定义Filter。若需要多个Filter结合使用,可以通过FilterList来满足。

以下主要对各个Filter进行简单的了解。

数据准备

rowkey cf1:col1 cf1:col2 cf2:col1 cf2:col2
101 10086 qwe1 1352288xxxx wer1
102 10000 sdf2 1820160xxxx ert2
103 10001 cxv3 1531308xxxx mnb3
104 12306 jhg4 1387223xxxx kji4
105 12580 nju5 1580101xxxx nbv5

代码准备

Comparision Filters(比较过滤器)

RowFilter

使用示例

结果

Key: 101/cf1:col1/1404704499698/Put/vlen=5/ts=0, Value: 10086
Key: 101/cf1:col2/1404704499698/Put/vlen=4/ts=0, Value: qwe1
Key: 101/cf2:col1/1404704499698/Put/vlen=11/ts=0, Value: 1352288xxxx
Key: 101/cf2:col2/1404704499698/Put/vlen=4/ts=0, Value: wer1

其它

RowFilter,行过滤器,实际上称之为行键过滤器更合适,用于行键的各种过滤上。构造函数为RowFilter(CompareFilter.CompareOp rowCompareOp, WritableByteArrayComparable rowComparator)。结合两个构造参数可以实现基于rowkey的不同过滤方式。

假设根据rowkey,数据分为3部分A、B、C,其中B为通过rowComparator选出的数据,接着通过rowCompareOp来确定最终的数据:若为EQUAL则选择B,若为LESS_OR_EQUAL则选择A+B,如此类推。

FamilyFilter

使用示例

结果

Key: 101/cf1:col1/1404704499698/Put/vlen=5/ts=0, Value: 10086
Key: 101/cf1:col2/1404704499698/Put/vlen=4/ts=0, Value: qwe1
Key: 102/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10000
Key: 102/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: sdf2
Key: 103/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10001
Key: 103/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: cxv3
Key: 104/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 12306
Key: 104/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: jhg4
Key: 105/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 12580
Key: 105/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: nju5

其它

FamilyFilter,列族过滤器,用于列族的过滤。其余特性与RowFilter类似,只是范围由rowkey变成了列族名。

QualifierFilter

使用示例

结果

Key: 101/cf1:col2/1404704499698/Put/vlen=4/ts=0, Value: qwe1
Key: 101/cf2:col2/1404704499698/Put/vlen=4/ts=0, Value: wer1
Key: 102/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: sdf2
Key: 102/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: ert2
Key: 103/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: cxv3
Key: 103/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: mnb3
Key: 104/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: jhg4
Key: 104/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: kji4
Key: 105/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: nju5
Key: 105/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: nbv5

其它

QualifierFilter,列名过滤器,用于列名的过滤。其余特性与RowFilter类似,只是范围由rowkey变成了列名。

ValueFilter

使用示例

结果

Key: 101/cf1:col1/1404704499698/Put/vlen=5/ts=0, Value: 10086
Key: 102/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10000
Key: 103/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10001

其它

ValueFilter,值过滤器,用于值的过滤。其余特性与RowFilter类似,只是范围由rowkey变成了值。

DependentColumnFilter

使用示例

结果

Key: 102/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10000
Key: 102/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: sdf2
Key: 102/cf2:col1/1404704499699/Put/vlen=11/ts=0, Value: 1820160xxxx
Key: 102/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: ert2
Key: 103/cf1:col1/1404704499699/Put/vlen=5/ts=0, Value: 10001
Key: 103/cf1:col2/1404704499699/Put/vlen=4/ts=0, Value: cxv3
Key: 103/cf2:col1/1404704499699/Put/vlen=11/ts=0, Value: 1531308xxxx
Key: 103/cf2:col2/1404704499699/Put/vlen=4/ts=0, Value: mnb3

其它

初步理解:与ValueFilter类似,只不过ValueFilter只输出满足条件的列,DependentColumnFilter则将满足条件的列所在的行全部输出。

(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
分类:Apache HBase
标签:
发表评论


profile
  • 文章总数:78篇
  • 评论总数:252条
  • 分类总数:31个
  • 标签总数:43个
  • 运行时间:946天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • pacificLee: :twisted:
  • 小码: 为什么没有后面的呢,只有前10个
  • Anonymous: :lol:
  • Anonymous: :razz: 楼主是属于会聊天的。 我想问,sqoop发了几个版本了,应该没这些问题了吧。
  • Anonymous: Config.kafkaConfig.kafkaGroupI d 这个是指自己配置的group id 还是从 import org.apache.kafka.common.config .Config 这个类...
  • Anonymous: ZkUtils.getPartitionsForTopics (zkClient, Config.kafkaConfig.topic) 那个方法是在 spark-streaming_2.10 中 kafka...
  • Anonymous: ZkUtils.getPartitionsForTopics (zkClient, Config.kafkaConfig.topic) 你确定 kafka 里面有这个类 ? 个人在kafka 最新 稳定版...
  • Anonymous: :roll:
  • Anonymous: 很不错,试问有java版的吗?
  • Anonymous: 赞
  • Anonymous: 哈哈 看楼主的吐槽乐死了 where子句是可以写的 同样找不到资料 一点点试出来的 select id from xxxx where ${CONDITIONS} and 1=1 and 2=2 limit 4
  • EVIL: 我在运行完C4.5的代码后,显示 defined object DecisionTreeTest 是什么意思?这是有错误吗?运行结果在哪里看?
  • sf: 楼主的问题,我都遇到。。。没办法项目已经定型了,最后都硬着头 皮一个一个的改了源码
  • zz: 我去,楼主你真及时,我们今天上了新的HTTP2 push之后也发现速度曲线很奇怪,开始有200k/min,跟 另一台老的推送协议速度差不多,但是过了一会,立马降到只有几k /min,百思不得其解,我们还用了一个海外代理,在...
  • qi365: :mad: 很可恶,百度助纣为虐~
  • qi365: :? :shock: haha~ very good~
  • 张是大: 《深入浅出Spark机器学习实战(用户行为分析)》 课程网盘下载:http://pan.baidu.com/s/ 1mixvUli 密码:1pfn
  • Anonymous: :???:
  • Anonymous: 我用着sqoop感觉还可以,select 几十个字段也没事,估计是版本低。。
  • Anonymous: :grin: