HBase建表函数createTable的几点说明
来源:互联网 发布:movielens数据集下载 编辑:程序博客网 时间:2024/05/18 00:48
HBase建表函数提供了四个重载函数,分别是
[java] view plaincopyprint?
- void createTable(HTableDescriptor desc)
- void createTable(HTableDescriptor desc, byte[] startKey,byte[] endKey, int numRegions)
- void createTable(HTableDescriptor desc, byte[][] splitKeys)
- void createTableAsync(HTableDescriptor desc, byte[][] splitKeys)
第一个函数相对简单,就是创建一个表,这个表没有任何region。后三个函数是创建表的时候帮你分配好指定数量的region(提前分配region的好处,了解HBase的人都清楚,为了减少Split,这样能节省不少时间)
第二个函数是使用者指定表的“起始行键”、“末尾行键”和region的数量,这样系统自动给你划分region。根据的region数,来均分所有的行键。这个方法的问题是如果你的表的行键不是连续的,那样的话就导致有些region的行键不会用到,有些region是全满的。
所以HBase很人性的给了第三种和第四种方法。这两个函数是用户需要自己region的划分。这个函数的参数splitKeys是一个二维字节数据,行的最大数表示region划分数+1,列就表示region和region之间的行键。比如:
[java] view plaincopyprint?
- byte[][] regions = new byte[][] {
- Bytes.toBytes("A"),
- Bytes.toBytes("D"),
- Bytes.toBytes("G"),
- Bytes.toBytes("K"),
- Bytes.toBytes("O"),
- Bytes.toBytes("T")
- };
[java] view plaincopyprint?
- [1] start key: , end key: A
- [2] start key: A, end key: D
- [3] start key: D, end key: G
- [4] start key: G, end key: K
- [5] start key: K, end key: O
- [6] start key: O, end key: T
- [7] start key: T, end key:
但是后三个函数,再建表时,如果region数过多,会报这个异常:
[java] view plaincopyprint?
- 13/06/24 11:33:49 WARN client.HBaseAdmin: Creating x took too long
[java] view plaincopyprint?
- java.net.SocketTimeoutException: Call to cloudgis4/192.168.3.7:60000 failed on socket timeout exception: java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel[connected local=/192.168.2.198:37133 remote=cloudgis4/192.168.3.7:60000]
- at org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:802)
- at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:775)
- at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:257)
- at $Proxy4.createTable(Unknown Source)
- at org.apache.hadoop.hbase.client.HBaseAdmin.createTableAsync(HBaseAdmin.java:405)
- at org.apache.hadoop.hbase.client.HBaseAdmin.createTable(HBaseAdmin.java:317)
- at GIS.Update.TestUpdate.testHBase(TestUpdate.java:181)
- at GIS.Update.TestUpdate.main(TestUpdate.java:267)
- Caused by: java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel[connected local=/192.168.2.198:37133 remote=cloudgis4/192.168.3.7:60000]
- at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:164)
- at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
- at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
- at java.io.FilterInputStream.read(Unknown Source)
- at org.apache.hadoop.hbase.ipc.HBaseClient$Connection$PingInputStream.read(HBaseClient.java:299)
- at java.io.BufferedInputStream.fill(Unknown Source)
- at java.io.BufferedInputStream.read(Unknown Source)
- at java.io.DataInputStream.readInt(Unknown Source)
- at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:539)
- at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:477)
- Exception in thread "main" org.apache.hadoop.hbase.client.RegionOfflineException: Only 0 of 1000 regions are online; retries exhausted.
- at org.apache.hadoop.hbase.client.HBaseAdmin.createTable(HBaseAdmin.java:355)
- at GIS.Update.TestUpdate.testHBase(TestUpdate.java:181)
- at GIS.Update.TestUpdate.main(TestUpdate.java:267)
具体就是说建表超时了,google了好久也没找到解决办法。
[java] view plaincopyprint?
- createTableAsync
0 0
- HBase建表函数createTable的几点说明
- HBase建表函数createTable的几点说明
- HBase建表函数createTable的几点说明
- hbase的createTable
- HBase Admin createTable 创建表
- 纯虚函数的几点说明
- printf函数的几点说明
- 关于输入输出函数的几点说明
- 函数调用的几点说明:
- HBase createTable 的服务器端实现源码分析
- Hbase 的几点学习体会
- 关于C#静态构造函数的几点说明 [转]
- 关于C#静态构造函数的几点说明
- 【转载】关于C#静态构造函数的几点说明
- mount 函数挂载的几点说明
- 关于C#静态构造函数的几点说明
- 关于C#静态构造函数的几点说明
- 关于C#静态构造函数的几点说明
- 应用实时监控
- HADOOP中的CRC数据校验文件
- 对象——基本概念
- HBase查询一条数据的过程.
- Sublime Text的那些事
- HBase建表函数createTable的几点说明
- Gson解析(2)——Gson注解和GsonBuilder
- Python - 刷博客浏览数
- dp zoj3822 Domination
- Have Lunch Together
- HBase连接池 -- HTablePool被Deprecated以及可能原因是什么
- revit二次开发--获取element的三种方法
- QT5 学习之路21---文件对话框
- Android 自定义View (一)