hbase使用api创建表

HBase建表函数提供了四个重载函数,分别是

[java]  view plain copy print ?
  1. void createTable(HTableDescriptor desc)  
  2. void createTable(HTableDescriptor desc, byte[] startKey,byte[] endKey, int numRegions)  
  3. void createTable(HTableDescriptor desc, byte[][] splitKeys)  
  4.    
  5. void createTableAsync(HTableDescriptor desc, byte[][] splitKeys)  
这四个函数的相同点是都是根据表描述符来创建表。其中一个不同是钱三个函数式同步创建(也就是表没创建完,函数不返回)。而带Async的这个函数式异步的(后台自动创建表)。

第一个函数相对简单,就是创建一个表,这个表没有任何region。后三个函数是创建表的时候帮你分配好指定数量的region(提前分配region的好处,了解HBase的人都清楚,为了减少Split,这样能节省不少时间)

第二个函数是使用者指定表的“起始行键”、“末尾行键”和region的数量,这样系统自动给你划分region。根据的region数,来均分所有的行键。这个方法的问题是如果你的表的行键不是连续的,那样的话就导致有些region的行键不会用到,有些region是全满的

所以HBase很人性的给了第三种和第四种方法。这两个函数是用户需要自己region的划分。这个函数的参数splitKeys是一个二维字节数据,行的最大数表示region划分数+1,列就表示region和region之间的行键。比如:

[java]  view plain copy print ?
  1. byte[][] regions = new byte[][] {   
  2.   Bytes.toBytes("A"),  
  3.   Bytes.toBytes("D"),  
  4.   Bytes.toBytes("G"),  
  5.   Bytes.toBytes("K"),  
  6.   Bytes.toBytes("O"),  
  7.   Bytes.toBytes("T")  
  8. };  
就表示有7个region(6+1),具体region表示的行键为:

[java]  view plain copy print ?
  1. [1] start key: , end key: A  
  2. [2] start key: A, end key: D  
  3. [3] start key: D, end key: G  
  4. [4] start key: G, end key: K  
  5. [5] start key: K, end key: O  
  6. [6] start key: O, end key: T  
  7. [7] start key: T, end key:  
这个例子来源于HBase权威指南。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值