我正在学习Hbase和协处理器。文档显示协处理器jar需要在hbase类路径中。这是否意味着如果我想添加我的自定义协处理器,我必须重新启动hbase?重启hbase会丢失数据吗?
谢谢,
发布于 2015-03-25 19:20:26
您需要将带协处理器的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;
}
});https://stackoverflow.com/questions/27938191
复制相似问题