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;
}
1.2 Row Key
HBase 中 row key 用来检索表中的记录,支持以下三种方式:
� 通过单个 row key 访问:即按照某个 row key 键值进行 get 操作;
� 通 过 row key 的 range 进 行 scan : 即 通 过 设 置 startRowKey 和
endRowKey,在这个范围内进行扫描;
� 全表扫描:即直接扫描整张表中所有行记录。
在 HBase 中,row key 可以是任意字符串,最大长度 64KB,实际应用中一
般为 10~100bytes,存为 byte[]字节数组,一般设计成定长的。
row key 是按照字典序存储,因此,设计 row key 时,要充分利用这个排序
特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。
评论0
最新资源