文档首页 > > 开发指南> HBase应用开发> 开发程序> 样例代码说明> Region的多点分割

Region的多点分割

分享
更新时间: 2019/10/30 GMT+08:00

功能简介

一般通过org.apache.hadoop.hbase.client.HBaseAdmin进行多点分割。

分割操作只对空Region起作用。

MRS 2.0.0及其之后版本中该接口被移除,不再支持此功能。可在创建表时对表进行预分区,或者对某些region直接进行split操作来替代。

本例使用multiSplit进行多点分割将HBase表按照“A~D”、“D~F”、“F~H”、“H~Z”分为四个Region。

代码样例

以下代码片段在com.huawei.bigdata.hbase.examples包的“HBaseExample”类的testMultiSplit方法中

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 ", e);
    } 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.");
}
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区