Region的多点分割
功能简介
一般通过org.apache.hadoop.hbase.client.HBaseAdmin进行多点分割。注意:分割操作只对空Region起作用。
本例使用multiSplit进行多点分割将HBase表按照“A~D”、“D~F”、“F~H”、“H~Z”分为四个Region。
代码样例
public void testMultiSplit() {
LOG.info("Entering testMultiSplit.");
Table table = null;
Admin admin = null;
try {
admin = conn.getAdmin();
// initilize a HTable object
table = conn.getTable(tableName);
Set<HRegionInfo> regionSet = new HashSet<HRegionInfo>();
List<HRegionLocation> regionList = conn.getRegionLocator(tableName).getAllRegionLocations();
for(HRegionLocation hrl : regionList){
regionSet.add(hrl.getRegionInfo());
}
byte[][] sk = new byte[4][];
sk[0] = "A".getBytes();
sk[1] = "D".getBytes();
sk[2] = "F".getBytes();
sk[3] = "H".getBytes();
for (HRegionInfo regionInfo : regionSet) {
((HBaseAdmin)admin).multiSplit(regionInfo.getRegionName(), sk);
}
LOG.info("MultiSplit successfully.");
} catch (Exception e) {
LOG.error("MultiSplit failed.");
} finally {
if (table != null) {
try {
// Close table object
table.close();
} catch (IOException e) {
LOG.error("Close table failed " ,e);
}
}
if (admin != null) {
try {
// Close the Admin object.
admin.close();
} catch (IOException e) {
LOG.error("Close admin failed " ,e);
}
}
}
LOG.info("Exiting testMultiSplit.");
}
注意:分割操作只对空Region起作用。