Hbase 学习(三)Coprocessors

  • 时间:
  • 浏览:6

写完完后 ,注册一下吧。

通过table的coprocessorExec法律土办法调用,但是 调用RowCountProtocol接口的getRowCount()法律土办法。

这是CoprocessorEnvironment的法律土办法。

但是 遍历每个Region返回的结果,合起来只是最终的结果,打印结果如下。

要在所有region顶端操作,大伙儿要调用coprocessorExec()法律土办法 传有两个开使 row key 和开使 row key。

所有的Coprocessor完正都是实现自Coprocessor 接口,它分SYSTEM和USER,前者的优先级比后者的优先级高,先执行。

在顶端的例子当中,大伙儿是用Batch.Call()法律土办法来调用接口当中的法律土办法,大伙儿还可以不能用另外有两个法律土办法来错综复杂上述代码,来看例子。

Working with Tables

顶端你你这个 例子是查找row4行所在region的数据条数,你你这个 还可以不能帮助大伙儿统计每个region顶端的数据分布。

但是 有某些内置的接口让大伙儿去实现,RegionObserver、MasterObserver、WALObserver,看名字就合适知道大伙儿是干嘛的。

void start(CoprocessorEnvironment env) throws IOException; 

Coprocessors分你你这个 ,observer和endpoint。

完后 大伙儿的filter完正都是在客户端定义,但是 传到服务端去执行的,你你这个 Coprocessors是在服务端定义,在客户端调用,但是 在服务端执行,他有点硬儿想大伙儿熟悉的存储过程,传某些参数进去,但是 进行大伙儿完后 定义好的操作,大伙儿常常用它来做某些比如二次索引啊,统计函数哪几种的,它也和自定义filter一样,时需完后 定好,但是 在hbase-env.sh中的HBASE_CLASSPATH中指明,就像我的上一篇中的写的那样。

但是 在对表操作的完后 ,非要对行加锁。

hbase.coprocessor.wal.classes上,大伙儿分别负责region,master,wal,注册到region的要有点硬注意小心,但是 它是针对所有表的。

说了那么 多废话,我完正都是好意思再说了,来个例子吧,统计行数的。

对表进行操作的完后 ,时需先调用getTable法律土办法活得HTable,不还可以不还可以个人定义有两个HTable,目前貌似那么 禁止,但是 将来会禁止。

Coprocessor Loading

大伙儿自定义的时间还可以不能注册到有两个配置项上,分别是hbase.coprocessor.region.classes,hbase.coprocessor.master.classes,

调用coprocessorProxy() 传有两个单独的row key,这是在单独有两个region上操作的。

Demo

void stop(CoprocessorEnvironment env) throws IOException;

EndPoint的还可以不能用来定义聚合函数,大伙儿还可以不能调用CoprocessorProtocol中的法律土办法来实现大伙儿的需求。

注册到你你这个 有两个触发器上,还可以不能监控到几乎所有大伙儿的操作顶端,非常恐怖。。还可以不能说是但是 哪几种完正都是哪几种,完正的代码大伙儿个人去摸索。

(2)endpoint还可以不能认为是自定义函数,还可以不能把你你这个 理解为关系数据库的存储过程。

在服务端定义完后 ,大伙儿何如会会会么会在客户端用java代码调用呢,看下面的例子你就明白啦!

它有有两个法律土办法,start和stop法律土办法,有两个法律土办法完正都是有两个相同的上下文对象CoprocessorEnvironment。

Coprocessor加载时需在配置文件顶端全局加载,比如在hbase-site.xml中设置。

(1)observer就像触发器一样,当某个事件处在的完后 ,它就出发。