Hbase 2.0 RegionObserver使用

参考:http://hbase.apache.org/2.0/book.html#cp

   Hbase2.0 不支持 1.x版本的RegionObserver  ,查看hbase官网更新说明,自己做了测试并通过

  • Hbase RegionObserver 

import java.io.IOException;
import java.util.List;
import java.util.Optional;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.coprocessor.ObserverContext;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.RegionObserver;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.wal.WALEdit;
import org.apache.yetus.audience.InterfaceAudience;import com.izhonghong.util.Md5Utils;//注:2.0版本之前使用extends BaseRegionObserver 实现,
public class ObserverTest implements   RegionObserver,RegionCoprocessor  {private static final Log LOG = LogFactory.getLog(ObserverTest.class);static Connection  connection = null;  static Table table = null;static{Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","test:2181");try {connection = ConnectionFactory.createConnection(conf);  table = connection.getTable(TableName.valueOf("tableName"));} catch (Exception e) {e.printStackTrace();}}private RegionCoprocessorEnvironment env = null;private static final String FAMAILLY_NAME = "fn";private static final String UID = "uid";private static final String BIZ = "biz";//2.0加入该方法,否则无法生效@Overridepublic Optional<RegionObserver> getRegionObserver() {// Extremely important to be sure that the coprocessor is invoked as a RegionObserverreturn Optional.of(this);}@Overridepublic void start(CoprocessorEnvironment e) throws IOException {env = (RegionCoprocessorEnvironment) e;}@Overridepublic void stop(CoprocessorEnvironment e) throws IOException {// nothing to do here}@Overridepublic void prePut(final ObserverContext<RegionCoprocessorEnvironment> e,final Put put, final WALEdit edit, final Durability durability)throws IOException {try {List<Cell> list = put.get(Bytes.toBytes(FAMAILLY_NAME),Bytes.toBytes(UID));if (list == null || list.size() == 0) {return;}Cell cell2 = list.get(0);String uid = Bytes.toString(CellUtil.cloneValue(cell2));Put put2 = new Put(Bytes.toBytes(Md5Utils.getMd5ByStr(uid)));put2.addColumn(Bytes.toBytes(FAMAILLY_NAME), Bytes.toBytes(BIZ),  Bytes.toBytes(uid));put2.setTTL(1000l * 60 * 60 *24 *30);table.put(put2);table.close();} catch (Exception e1) {LOG.error("异常------->>>>>> "+e1.getMessage());return ;}}}
  •  协处理器安装-表级别安装(这里coprocessor是hdfs路径,需提前将jar包发布到hdfs)
disable 'tableName'
alter 'tableName' , METHOD =>'table_att','coprocessor'=>'/hbase/coprocessor/hbase-coprocessor-1.0.0.jar|com.xxx.hbase.coprocessor.xxx|1001'
enable 'tableName'
  • 协处理器卸载
disable 'tableName'
alter 'tableName', METHOD => 'table_att_unset', NAME => 'coprocessor$1'
enable 'tableName'

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 16.0安装ros-kinetic

1.设置sources.list sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list best: sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/…

Impala Shell 简单命令

目录 1.更新元数据 2.对查询结果去格式化 3.查询结果存储到文件 4.去格式化后指定分隔符 5.-p或者--show-profiles:显示查询的执行计划(与EXPLAIN语句输出相同)和每个查询语句底层的执行步骤的详细信息. 6.指定主机名连接 (-i) 7.执行查询语句 8.指定脚本文件执行SQL …

gtest测试用例

google tf测试框架代码 https://github.com/google/googletest/tree/2fe3bd994b3189899d93f1d5a881e725e046fdc2 跑单个测试例 ./test --gtest_filterAllTest.t1 跑这个模块的所有测试例 ./test --gtest_filterAllTest*

__stdcall

__stdcall是函数调用约定的一种&#xff0c;函数调用约定主要约束了两件事&#xff1a;1.参数传递顺序2.调用堆栈由谁&#xff08;调用函数或被调用函数&#xff09;清理常见的函数调用约定&#xff1a;stdcall cdecl fastcall thiscall naked call__stdcall表示1.参数从右向左…

CDH邮件预警

转载自&#xff1a;http://blog.51cto.com/feature09/2055835 在CDH的7180页面找到Cloudera Managerment Service 如图所示&#xff1a; 在Configuration中&#xff0c;搜索alert 设置接收信息的邮箱。 设置内容都在图片上&#xff1a; 添加邮件页眉说明&#xff0c;第一行显…

结构光双目视觉测距原理

结构光视觉技术是一种主动投影式的三维测量技术&#xff0c;通过使用投影仪和相机组成的系统来对物体进行三维测量 系统结构&#xff1a; 硬件系统&#xff1a; 常见编码方法&#xff1a; 结构光图案编码 常用的是格雷码和传统的二进制码相比&#xff0c;格雷码的编码数中任意…

c++静态成员函数为什么不能为虚函数?

知乎用户 three passions govern my life2 人赞同可以把静态成员函数看作是“命名空间受限的普通函数”&#xff0c;所以它不能有运行时多态发布于 2015-06-23 添加评论 感谢 分享收藏 • 没有帮助 • 举报 • 作者保留权利Elvis Wang C程序员转型Java中6 人赞同其实我觉得这个…

Hive Shell

目录 hive是否执行mr 创建数据库指定目录 删除数据库 显示表信息/表结构 查看表示内部表还是外部表 拷贝一张已经存在的表的表模式&#xff08;而无需拷贝数据&#xff09; 复制一张表&#xff08;包括数据&#xff09; hive-cli 显示当前所在数据库 执行命令不进入hiv…

c++11/14新特性学习

1.__func__ 预定义表示符 返回所在函数的名字 #include<string> #include<iostream> using namespace std; const char* hello(){return __func__}int main() {cout<<hello()<<endl; } 打印结果&#xff1a; hello 2.__VA__ARGC__ 可以在宏定义的…

Linux chattr 与 lsattr命令

PS&#xff1a;有时候你发现用root权限都不能修改某个文件&#xff0c;大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大&#xff0c;其中一些功能是由Linux内核版本来支持的&#xff0c;不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修…

在C++中用虚函数的作用是什么?为什么要用到虚函数

简单地说&#xff0c;那些被virtual关键字修饰的成员函数&#xff0c;就是虚函数。虚函数的作用&#xff0c;用专业术语来解释就是实现多态性&#xff08;Polymorphism&#xff09;&#xff0c;多态性是将接口与实现进行分离&#xff1b;用形象的语言来解释就是实现以共同的方法…

如何成为一个优秀的高级C++程序员

C这门语言从诞生到今天已经经历了将近30个年头。不可否认&#xff0c;它的学习难度都比其它 语言较高。而它的学习难度&#xff0c;主要来自于它的复杂性。现在C的使用范围比以前已经少了很多&#xff0c;java、C#、python等语言在很多方面已经可以代替 C。但是也有很多地方是其…

cuda学习资源

https://bbs.gpuworld.cn/ https://developer.nvidia.com/cuda-zone http://docs.nvidia.com/cuda/index.html# https://www.cnblogs.com/1024incn/category/695134.html

c++标准库 及 命名空间std

1、命名空间std   C标准中引入命名空间的概念&#xff0c;是为了解决不同模块或者函数库中相同标识符冲突的问题。有了命名空间的概念&#xff0c;标识符就被限制在特定的范围(函数)内&#xff0c;不会引起命名冲突。最典型的例子就是std命名空间&#xff0c;C标准库中所有标…

Cloudera-Manager 与 原生集群 免密登录问题

原生集群启动方式&#xff1a; 在Hadoop启动以后&#xff0c;namenode是通过SSH来启动和停止各个节点上的各种守护进程的&#xff0c;这就需要在节点之间执行指令的时候是不需要输入密码的方式&#xff0c;故我们需要配置SSH使用无密码公钥认证的方式。 Cloudera-Manager启动方…

相机标定原理和opencv代码解析

1.单目标定 单应矩阵 设三维空间点的齐次坐标,对应的图像坐标为 他们满足一下关系&#xff1a; s为尺度因子&#xff0c;K为内参矩阵 R和T旋转平移矩阵统称为外参 假设我们提供K个棋盘图像&#xff0c;每个棋盘有N个角点&#xff0c;于是我们拥有2KN个约束方程。与此同时&am…

C++:构造函数和析构函数能否为虚函数

C&#xff1a;构造函数和析构函数能否为虚函数&#xff1f; 简单回答是&#xff1a;构造函数不能为虚函数&#xff0c;而析构函数可以且常常是虚函数。 &#xff08;1&#xff09; 构造函数不能为虚函数 让我们来看看大牛C之父 Bjarne Stroustrup 在《The C Programming Langua…

Linux平台下C++编程

关于Linux下开发应该具备哪些基础知识&#xff0c;应该如何进阶。除了C的基本语法知识外&#xff0c;应该学习哪些内容&#xff0c;更有助于工作和成长。同事给出了他自己的学习思路。具体如下&#xff1a; 1、STL STL作为已经被发明过的轮子&#xff0c;使用起来有很多好处&am…

Hive 大小表关联查询异常

异常原因&#xff1a;mr将数据量小的表识别成了大表&#xff0c;数据量大的识别成小表&#xff0c;导致将数据量大的表加入到内存&#xff0c;导致程序异常处理方法&#xff1a; set hive.execution.enginemr; set hive.mapjoin.smalltable.filesize55000000; set hive.auto.co…

cudaMemcpyToSymbol使用

学到了cudaMemcpyToSymbol竟然还有将数据从host拷贝到global的功能&#xff0c;以前只用过这个函数拷贝到constant memory。拷贝方式的不同是由目的内存申请的方式决定的。 申请的是device内存&#xff0c;cudaMemcpyToSymbol拷贝就是从host拷贝到global memory。 申请的是co…