删除hbase的region步骤和代码

本文介绍了如何使用Java删除Hbase表中特定StartKey的Region,包括初始化连接、删除Region元数据、创建新Region及关闭连接的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、初始化hbase连接

1 Configuration conf = HbaseCommonsUnit.initConfiguration();
2 Connection conn = ConnectionFactory.createConnection(conf);
3 Table meta_table = conn.getTable(TableName.META_TABLE_NAME);
4 HTable table = new HTable(conf, Bytes.toBytes(tablename)); //HTabel负责跟记录相关的操作如增删改查
5 HBaseAdmin admin = new HBaseAdmin(conf); //HBaseAdmin负责跟表相关的操作如create,drop等

2、删除Hbase表中Region中StartKey为2014000的Region及Meta中Region的元数据

A、先关闭regionserver中的Region
B、删除Region在HDFS上的文件
C、删除Meta表中Region数据记录信息
String startKey = "2014000";
HRegionInfo regionInfo = table.getRegionLocation(startKey).getRegionInfo();
String tableNameDataDir = "/data/default/" + tablename; 
FileSystem fs = FileSystem.get(conf);
Path rootDir = new Path(conf.get("hbase.rootdir") + tableNameDataDir);
HRegionFileSystem.deleteRegionFromFileSystem(conf, fs, rootDir, regionInfo);
String regionNameAsString = regionInfo.getRegionNameAsString();
ServerName serverName_temp = StrategyImplementUnit.getServerNameByRegionName(regionNameAsString);//获取region的regionServerName
admin.closeRegion(serverName_temp,regionInfo);
List list = new ArrayList();
Delete d1 = new Delete(regionNameAsString.getBytes());
list.add(d1); meta_table.delete(list); meta_table.close();

3、创建一个新的region,其中Startkey为NULL

1 String new_end_key = "2013222";
2 TableName tableName = TableName.valueOf(tablename);
3 HRegionInfo regionInfo = new HRegionInfo(tableName, Bytes.toBytes(""), Bytes.toBytes(new_end_key));
4 HRegionFileSystem.createRegionOnFileSystem(conf, fs, rootDir, regionInfo);
5 
6 Put put = MetaTableAccessor.makePutFromRegionInfo(regionInfo);
7 meta_table.put(put);
8 meta_table.close();

4、关闭hbase的连接

   if ( table != null) {
                try {
                    table.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

 

转载于:https://www.cnblogs.com/jinniezheng/p/6384170.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值