Hbase总结05_客户端高级特性

该部分总结的HBase权威指南

过滤器

用来减少查询结果的数量,在服务端进行过滤行为,减少和客户端的网络传送。实例化过滤器需要提供两个参数:比较运算符和比较器。

比较运算符

HBase内置的比较器

比较过滤器

行过滤器

    行过滤器用于过滤行键(rowkey)

列簇过滤器

     过滤列簇

列名过滤器

    筛选特定的列

值过滤器

    对列的值进行过滤,找到值满足需求的列

参考列过滤器

    指定一个列作为参考,用来过滤其他列

专用过滤器

单列值过滤器

    指定某列对其进行值比较(使用频率最高的filter)

    setFilterIfMissing(true)可以将不存在该列的行过滤掉,否则如果该列不存在也被放到查询结果中了

 

单列排除过滤器

    参考列不包含结果中

前缀过滤器

    与前缀匹配的行都会返回

分页过滤器

    对结果进行分页,需要制定pageSize

行键过滤器

    只将结果总KeyValue实例的健返回,不返回value值

首次行键过滤器

    只比较一行中的第一列,可以做 行数统计用

包含结束的过滤器

    扫描中的开始行包含在结果中,但末尾航被排除在外,使用这个可以返回末尾航

时间戳过滤器

    需要传入一个时间戳实例,返回与实例时间精准匹配的数据

列计数过滤器

    限制每行最多返回多少列

列分页过滤器

    对列进行分页,需要传入offset 和 limit两个参数,从第几列开始,一共包含几个列

列前缀过滤器

    对列明进行前缀过滤

随机行过滤器

    在结果中包含随机行,需要传入一个0 到 1 的参数,过滤器内部使用Random.nextFloat()判断下行是否过滤

附件过滤器

跳转过滤器

    

全匹配过滤器

    

FilterList

组合使用多个过滤器,过滤顺序即是将过滤器传入过滤集合的顺序,

自定义过滤器

过滤器总结

计数器

  • 计数器实质是一个列,一个计数器对应一个列
  • 用create创建,默认起始为0,每次加1
  • 用incr增加,用get_counter 获取

单计数器

    只操作一个计数器,用户自行定义列

多计数器

  • 使用HTable()的方法increment() 创建实例,可以为实例传入行键(Rowkey),
  • 此行可以包含多个计数器,
  • 计数器更新时有锁,读取时没有锁

协处理器

  • 允许用户将自己的代码打包上传到服务器上,在服务器上执行region级别的操作,类是触发器
  • jar包可以动态加载
  • HBase的授权认证和审查就是基于协处理器的
  • 包含两种类型: observer 和 endpoint

observer

endpoint

Coprocessor接口

协处理器必须实现的借口,有两个枚举类 Priority 和 State;系统优先级大于用户优先级。

协处理器应该用getTable方法获取HTable类,这样更安全,因为这个方法会加一些默认的安全措施,比如,协处理器不可以对一行数据加锁

无法指定在哪个表操作时触发协处理器

常用方法

枚举类定义的状态

协处理器加载

可以通过配置文件加载或从表描述符加载

RegionObserver

负责处理region级别的操作,属于coprocess的第一个子类

处理region生命事件

处理客户端API事件

    在客户端API执行前后进行拦截

RegionCoprocessorEnvironment

面向region子类提供一些特殊的方法

ObserverContext

    回调函数需要的上下文参数,提供了当前系统环境的入口,同时可以通知协处理器在回调函数完成时做什么

 

BaseRegionObserver

所有协处理器的基类,包含RegionObserver的所有接口的空方法,默认该类没有任何没有任何功能,用户可以自定实现某些方法,类似自定义处理器

MasterObserver

属于coprocess的第二个子类,负责处理与表操作有关的回调函数

MasterCorprocessEnvironment

封装了masterobserver类,实现了CoprocessEnvironment接口,可以依赖此类获取协处理器上下文变量或实例

BaseMasterObserver

默认实现了masterobserver接口所有方法,空实现,用户可以集成此类来自定义方法

endpoint

CoprocessorProtocol

为客户端提供的自定义RPC协议,用户通过实现和扩展这个接口可以实现任何方法

BaseEndpointCoprocessor

抽象类,包含一些需要用户自行实现的抽象方法,实现endpoint有两个步骤:

  1. 扩展CoprocessorProtocol接口,定义客户端与服务器通信RPC协议;
  2. 实现endpoint的所有方法,包含抽象类BaseEndpointCoprocessor的方法

HTablePool

  • 创建HTable很耗时,可以创建一个然后复用,HtablePool可以实现HTable的复用功能,避免反复创建浪费时间;
  • Htable不是线程安全的,在多线程并发使用时需要注意;

 

上一篇:Hbase总结04_客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值