赞
踩
第1关:创建表
本关任务:使用Java
代码在HBase
中创建表。
为了完成本关任务,你需要掌握:1.如何使用Java
连接HBase
数据库,2.如何使用Java
代码在HBase
中创建表。
Java
连接HBase
需要两个类:
HBaseConfiguration
ConnectionFactory
要连接HBase
我们首先需要创建Configuration
对象,这个对象我们需要通过HBaseConfiguration
(HBase
配置)对象来进行创建,HBaseConfiguration
看名字我们就能猜到它的用途:读取指定路径下hbase-site.xml
和hbase-default.xml
的配置信息。
具体用法:
-
-
Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象
获取到连接对象Connextion
我们就算连接上了HBase
了,怎么获取呢?
通过ConnectionFactory
(连接工厂)的方法我们就能获取到Connection
(连接对象)了。
具体用法:
-
-
Connection connection = ConnectionFactory.createConnection(config); //config为前文的配置对象
使用这两个步骤就能完成连接HBase
了。
注意:在1.0之前的版本
HBase
是使用HBaseAdmin
和HTable
等来操作HBase
的,但是在1.0
之后的版本中这些被弃用了,新的客户端API
更加干净简洁,本文使用的HBase
是2.1.1
版本(18年10月发布)的,
要创建表我们需要首先创建一个Admin
对象,然后让它来创建一张表:
-
-
Admin admin = connection.getAdmin(); //使用连接对象获取Admin对象
TableName tableName = TableName.valueOf("test");//定义表名
HTableDescriptor htd = new HTableDescriptor(tableName);//定义表对象
HColumnDescriptor hcd = new HColumnDescriptor("data");//定义列族对象
htd.addFamily(hcd); //添加
admin.createTable(htd);//创建表
上述创建表的方法是HBase1.X
版本的方式,而在HBase2.X
的版本中创建表使用了新的API
,创建表关键代码如下:
-
-
TableName tableName = TableName.valueOf("test");//定义表名
//TableDescriptor对象通过TableDescriptorBuilder构建;
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family);//设置列族
admin.createTable(tableDescriptor.build());//创建表
在2.X
版本中主要是HTableDescriptor
对象被弃用,取而代之的是TableDescriptor
对象,TableDescriptor
对象通过TableDescriptorBuilder
构建;
-
-
TableName tableName = TableName.valueOf("test");
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
然后添加列簇方法变更:
-
-
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//构建列族对象
tableDescriptor.setColumnFamily(family); //设置列族
最后由Admin
对象进行创建表操作:
-
-
admin.createTable(tableDescriptor.build());
值得咱们注意的是,如果你的HBase
环境是1.X
的那么你只能使用第一种方式来创建表,如果是2.X
的版本,那么两种方式你都可以使用(本实训使用的 HBase
是2.1.1
版本,所以两种都可用)。
好了,到你啦,使用本关知识,在右侧编辑器begin-end
处补充代码,请你编写一个Java
程序,在HBase
中创建表dept
,emp
,列都为:data
。
注意:
点击测评之前,请先开启Hadoop
(start-dfs.sh
)和HBase
(start-hbase.sh
),并且需要等待HBase
初始化完成(20
秒左右),否则无法在HBase
中创建表。
cd /app/hadoop3.1/etc/hadoop/
cd /app/hbase-2.1.1
怎么查看HBase
初始化成功了呢?
输入hadoop fs -ls /hbase
有如下结果即可:
如果启动过程中出现: datanode running as process 214. Stop it first.
说明Hadoop
的进程还没有被杀死。
需要我们重新stop-dfs.sh
和stop-hbase.sh
,然后在重启。
开始你的任务吧,祝你成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。