开发者社区 问答 正文

Region 如何预建分区?

Region 如何预建分区?

展开
收起
芯在这 2021-12-11 22:16:04 385 分享 版权
1 条回答
写回答
取消 提交回答
  • 预分区的目的主要是在创建表的时候指定分区数,提前规划表有多个分区,以及每个分区的区间范围,这样在存储的时候 rowkey 按照分区的区间存储,可以避免 region 热点问题。 通常有两种方案:

    方案 1:shell 方法

    create ‘tb_splits’, {NAME => ‘cf’,VERSIONS=> 3},{SPLITS => [‘10’,‘20’,‘30’]}

    方案 2: JAVA 程序控制

    · 取样,先随机生成一定数量的 rowkey,将取样数据按升序排序放到一个集合里;

    · 根据预分区的 region 个数,对整个集合平均分割,即是相关的 splitKeys;

    · HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][]splitkeys)可以指定预分区的 splitKey,即是指定 region 间的 rowkey 临界值。

    2021-12-11 22:16:28
    赞同 展开评论
问答地址: