Coprocessor构建二级索引

Coprocessor:
1.Coprocessor提供了一种机制可以让开发者直接在RegionServer上运行自定义代码来管理数据。
使用Coprocessor,可以将业务代码封装,并在RegionServer上运行,也就是数据在那里,就在哪里跑代码,这样就节省了很大的数据传输的网络开销。
2.Coprocessor有两种:Observer和EndPoint
EndPoint主要用于计算,比如计算一些平均值或者求和。
Observer类似于传统关系型数据库的触发器,在一些特定的操作之前或之后触发。
Observer Coprocessor使用场景:
2.1安全性:在执行Get或Put操作前,通过preGet或prePut方法检查是否允许该操作。
2.2引用完整性约束:HBase并不支持关系型数据库中的引用完整性约束,但是我们可以通过使用Coprocessor增强这种约束
2.3二级索引:
二级索引设计思想:
在这里插入图片描述

通过建立列值到rowKey的映射来建立二级索引,通过列值找到rowKey,再通过rowKey找到相应的需求值。
Coprocessor加载方式:
要是用Coprocessor,就需要完成对它的装载。可以静态实现(通过HBase配置文件),也可以动态完成(通过shell或Java API)
静态装载和卸载Coprocessor(系统Coprocessor)

静态装载步骤:
1.在hbase-site.xml中使用标签定义一个人Coprocessor

<property>
    <name>hbase.coprocessor.region.classes</name>
    <value>org.cwj.hbase.coprocessor.observer.IndexObserver</value>
</property>
标签的内容是自定义Coprocessor的权限定类名
如果需要装载多个类,类名用逗号分隔
使用这种方式加载的Coprocessor将会作用在HBase所有表的全部Region

2.将代码放到HBase的类路径下。jar包放在lib目录下
3.重启HBase
静态卸载的步骤:
1.移除hbase-site.xml中的配置
2.重启Hbase
3.删除jar包
动态装载Coprocessor(表级Coprocessor)
动态装载Coprocessor的有优势不需要重启HBase。动态加载的Coprocessor只针对某个表有效
步骤:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值