HBase 创建表
你可以使用 create 命令,这里你必须指定表名和列族名。这 syntax 在 HBase shell 中创建表如下所示。
create ‘<table name>’,’<column family>’
例子
下面给出的是名为 emp 的表的示例模式。它有两个列族:“个人数据”和“专业数据”。
Row key | 个人资料 | 专业数据 |
---|---|---|
你可以在 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> list TABLE emp 2 row(s) in 0.0340 seconds
使用 java API 创建表
你可以在 HBase 中使用 创建表() 的方法 HBaseAdmin 班级。这个类属于 org.apache.hadoop.hbase.client 包裹。下面给出了使用 java API 在 HBase 中创建表的步骤。
步骤1:实例化HBaseAdmin
此类需要 Configuration 对象作为参数,因此最初实例化 Configuration 类并将此实例传递给 HBaseAdmin。
Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf);
步骤2:创建表描述符
表描述符 是属于的类 org.apache.hadoop.hbase 班级。这个类就像一个包含表名和列族的容器。
// 创建表描述符 HTableDescriptor table = new HTableDescriptor(toBytes("Table name")); // 创建列族描述符 HColumnDescriptor family = new HColumnDescriptor(toBytes("column family")); // 将列族添加到 HTable table.addFamily(family);
第 3 步:通过管理员执行
使用 创建表() 的方法 HBaseAdmin 类,你可以在管理员模式下执行创建的表。
admin.createTable(table);
下面给出的是通过管理员创建表的完整程序。
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 { // 实例化配置类 Configuration con = HBaseConfiguration.create(); // 实例化 HbaseAdmin 类 HBaseAdmin admin = new HBaseAdmin(con); // 实例化表描述符类 HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("emp")); // 将列族添加到表描述符 tableDescriptor.addFamily(new HColumnDescriptor("personal")); tableDescriptor.addFamily(new HColumnDescriptor("professional")); // 通过admin执行表 admin.createTable(tableDescriptor); System.out.println(" Table created "); } }
编译并执行上述程序,如下图所示。
$javac CreateTable.java $java CreateTable
以下应该是输出:
Table created