使用Shell创建表
可以使用命令创建一个表,在这里必须指定表名和列族名。在HBase shell中创建表的语法如下所示。
create ‘<table name>’,’<column family>’
示例
下面给出的是一个表名为emp的样本模式。它有两个列族:“personal data”和“professional data”。| Row key | personal data | professional data|
| —- | —- | —- |
| | |
|
| | |
|
在HBase shell创建该表如下所示。
hbase(main):002:0> create 'emp', 'personal data', ’professional data’
它会给下面的输出。
0 row(s) in 1.1300 seconds=> Hbase::Table - emp
验证创建
可以验证是否已经创建,使用 **list **命令如下所示。在这里,可以看到创建的emp表。
hbase(main):002:0> listTABLEemp2 row(s) in 0.0340 seconds
使用Java API创建一个表
可以使用HBaseAdmin类的createTable()方法创建表在HBase中。这个类属于org.apache.hadoop.hbase.client 包。下面给出的步骤是来使用Java API创建表在HBase中。
第1步:实例化HBaseAdmin
这个类需要配置对象作为参数,因此初始实例配置类传递此实例给HBaseAdmin。
Configuration conf = HBaseConfiguration.create();HBaseAdmin admin = new HBaseAdmin(conf);
第2步:创建TableDescriptor
//creating table descriptorHTableDescriptor table = new HTableDescriptor(toBytes("Table name"));//creating column family descriptorHColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));//adding coloumn family to HTabletable.addFamily(family);
HTableDescriptor类是属于org.apache.hadoop.hbase。这个类就像表名和列族的容器一样。
第3步:通过执行管理
使用HBaseAdmin类的createTable()方法,可以在管理模式执行创建的表。
admin.createTable(table);
下面给出的是完整的程序,通过HBaseAdmin创建一个表。
import java.io.IOException;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.conf.Configuration;public class CreateTable {public static void main(String[] args) throws IOException {// Instantiating configuration classConfiguration con = HBaseConfiguration.create();// Instantiating HbaseAdmin classHBaseAdmin admin = new HBaseAdmin(con);// Instantiating table descriptor classHTableDescriptor tableDescriptor = newTableDescriptor(TableName.valueOf("emp"));// Adding column families to table descriptortableDescriptor.addFamily(new HColumnDescriptor("personal"));tableDescriptor.addFamily(new HColumnDescriptor("professional"));// Execute the table through adminadmin.createTable(tableDescriptor);System.out.println(" Table created ");}}
编译和执行上述程序如下所示。
$javac CreateTable.java$java CreateTable
下面列出的是输出:
Table created
