我正在学习Hbase和协处理器。文档显示协处理器jar需要在hbase类路径中。这是否意味着如果我想添加我的自定义协处理器我必须重新启动hbase?如果我重启hbase会丢失数据吗?
谢谢,
答案 0 :(得分:0)
您需要将协处理器的jar复制到hdfs:
FileSystem fs = FileSystem.get(conf);
fs.copyFromLocalFile(localFile, hdfsFile);
fs.close();
然后您需要将协处理器添加到现有表(或创建新表):
HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor descriptor = admin.getTableDescriptor(tableName);
descriptor.addCoprocessor(MyCoprocessor.class.getName(), hdfsFile,
Coprocessor.PRIORITY_USER, null);
admin.modifyTable(tableName, descriptor);
admin.close();
如果您想以特定用户身份执行此操作,则所有代码都应位于:
中UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hbase");
ugi.doAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
// HERE
return null;
}
});