`

HBase 笔记四 预先设置regions

阅读更多

 

来源文档:http://hbase.apache.org/book.html#precreate.regions

                 http://hbase.apache.org/book.html#rowkey.regionsplits

 

以上是hbase文档,详细学习就rtfd吧

 

这里给出了文档中预先设置regions的代码,项目中也用的是这种方法,解决入大数据到hbase都阻塞在一台机子的一个region上:

 

public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits)
throws IOException {
  try {
    admin.createTable( table, splits );
    return true;
  } catch (TableExistsException e) {
    logger.info("table " + table.getNameAsString() + " already exists");
    // the table already exists...
    return false;
  }
}

public static byte[][] getHexSplits(String startKey, String endKey, int numRegions) {
  byte[][] splits = new byte[numRegions-1][];
  BigInteger lowestKey = new BigInteger(startKey, 16);
  BigInteger highestKey = new BigInteger(endKey, 16);
  BigInteger range = highestKey.subtract(lowestKey);
  BigInteger regionIncrement = range.divide(BigInteger.valueOf(numRegions));
  lowestKey = lowestKey.add(regionIncrement);
  for(int i=0; i < numRegions-1;i++) {
    BigInteger key = lowestKey.add(regionIncrement.multiply(BigInteger.valueOf(i)));
    byte[] b = String.format("%016x", key).getBytes();
    splits[i] = b;
  }
  return splits;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics