使用Shell创建表

可以使用命令创建一个表,在这里必须指定表名和列族名。在HBase shell中创建表的语法如下所示。

  1. create ‘<table name>’,’<column family>’

示例

  1. 下面给出的是一个表名为emp的样本模式。它有两个列族:“personal data”和“professional data”。
  2. | Row key | personal data | professional data
  3. |

| —- | —- | —- | | | |
| | | |
|

  1. HBase shell创建该表如下所示。
  1. hbase(main):002:0> create 'emp', 'personal data', professional data


它会给下面的输出。

  1. 0 row(s) in 1.1300 seconds
  2. => Hbase::Table - emp

验证创建

  1. 可以验证是否已经创建,使用 **list **命令如下所示。在这里,可以看到创建的emp表。
  1. hbase(main):002:0> list
  2. TABLE
  3. emp
  4. 2 row(s) in 0.0340 seconds


使用Java API创建一个表

  1. 可以使用HBaseAdmin类的createTable()方法创建表在HBase中。这个类属于org.apache.hadoop.hbase.client 包。下面给出的步骤是来使用Java API创建表在HBase中。

第1步:实例化HBaseAdmin

  1. 这个类需要配置对象作为参数,因此初始实例配置类传递此实例给HBaseAdmin
  1. Configuration conf = HBaseConfiguration.create();
  2. HBaseAdmin admin = new HBaseAdmin(conf);


第2步:创建TableDescriptor

  1. //creating table descriptor
  2. HTableDescriptor table = new HTableDescriptor(toBytes("Table name"));
  3. //creating column family descriptor
  4. HColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));
  5. //adding coloumn family to HTable
  6. table.addFamily(family);
  1. HTableDescriptor类是属于org.apache.hadoop.hbase。这个类就像表名和列族的容器一样。

第3步:通过执行管理

  1. 使用HBaseAdmin类的createTable()方法,可以在管理模式执行创建的表。
  1. admin.createTable(table);


下面给出的是完整的程序,通过HBaseAdmin创建一个表。

  1. import java.io.IOException;
  2. import org.apache.hadoop.hbase.HBaseConfiguration;
  3. import org.apache.hadoop.hbase.HColumnDescriptor;
  4. import org.apache.hadoop.hbase.HTableDescriptor;
  5. import org.apache.hadoop.hbase.client.HBaseAdmin;
  6. import org.apache.hadoop.hbase.TableName;
  7. import org.apache.hadoop.conf.Configuration;
  8. public class CreateTable {
  9. public static void main(String[] args) throws IOException {
  10. // Instantiating configuration class
  11. Configuration con = HBaseConfiguration.create();
  12. // Instantiating HbaseAdmin class
  13. HBaseAdmin admin = new HBaseAdmin(con);
  14. // Instantiating table descriptor class
  15. HTableDescriptor tableDescriptor = new
  16. TableDescriptor(TableName.valueOf("emp"));
  17. // Adding column families to table descriptor
  18. tableDescriptor.addFamily(new HColumnDescriptor("personal"));
  19. tableDescriptor.addFamily(new HColumnDescriptor("professional"));
  20. // Execute the table through admin
  21. admin.createTable(tableDescriptor);
  22. System.out.println(" Table created ");
  23. }
  24. }


  1. 编译和执行上述程序如下所示。
  1. $javac CreateTable.java
  2. $java CreateTable
  1. 下面列出的是输出:
  1. Table created