来源文档: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;
}
本文介绍了如何使用HBase进行预分区以避免大数据导入时的热点问题。提供了具体的Java代码示例,展示了如何创建预分区表及计算分区键。
1038

被折叠的 条评论
为什么被折叠?



