预建分区的方法很简单,有以下两种
- hbase shell
- create 't1', 'f1',SPLITS=>['10','20','30']
- create 't1','f1',SPLITS_FILE =>'splits.txt'
-
Java API
- 创建一个byte[][] splitKeys = {{1,2,3},{4,5,6}}
- admin.createTable(tableDesc,splitKeys)
预建分区的难点在于key如何设计,分多少个和如何分的问题,那么下面我们就对这三个问题一一分析:
1)如何设计Key,我们设计Key的原则就是要让Key足够散列,但同时又要保持Key的长度适中,这里给出一个方法,样本取自Spark读写HBase中的数据
01055HAXMTXG10100001@KEY_VOLTAGE_TEC_PWR@1.60@1.62@1.75@1.55
我想要的rowKey是:01055HAXMTXG10100001KEY_VOLTAGE_TEC_PWR
但是很明显这样肯定是不会足够散列的,那么我们可以对上面那个Key进行MD5,然后取前面三个字符(为了更加散列,可以取1,3,5或者其他组合)再加上原来的Key
DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1)
这样的话我们就可以得到足够散列的数据,并且MD5取得的是十六进制字符串,那么Key的范围就是(0,0,0)至(f,f,f)
2)分多少个:这个需要我们就要根据我们集群规模来进行安排,假设我们有5regionServer,每个regionServer有20个region,那么总共就是100个region,最后的工作就是将000-fff分成100份。
上一题:HBase的导入导出方式
标签: key、散列、预建、splits、region
笔试题
刷题
简历模板
AI算法
大数据
内推
内推: