0


HBase 开发:使用Java操作HBase 第1关:创建表

为了完成本关任务,你需要掌握:1.如何使用

Java

连接

HBase

数据库,2.如何使用

Java

代码在

HBase

中创建表。

如何使用Java连接HBase数据库

Java

连接

HBase

需要两个类:

  • HBaseConfiguration
  • ConnectionFactory

HBaseConfiguration

要连接

HBase

我们首先需要创建

Configuration

对象,这个对象我们需要通过

HBaseConfiguration

HBase

配置)对象来进行创建,

HBaseConfiguration

看名字我们就能猜到它的用途:**读取指定路径下

hbase-site.xml

hbase-default.xml

的配置信息**。

具体用法:

Configuration config = HBaseConfiguration.create(); //使用create()静态方法就可以得到Configuration对象

ConnectionFactory

获取到连接对象

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);//创建表

HBase2.X创建表

上述创建表的方法是

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

package step1;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
/**
* HBase 1.0 version of ExampleClient that uses {@code Connection},
* {@code Admin} and {@code Table}.
*/
public class Task{
public void createTable()throws Exception{
/********* Begin *********/
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
try {
// Create table
Admin admin = connection.getAdmin();
try {
TableName tableName = TableName.valueOf("dept");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder tableDescriptor =
TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();// 构建列族对象
tableDescriptor.setColumnFamily(family); // 设置列族
admin.createTable(tableDescriptor.build()); // 创建表

TableName emp = TableName.valueOf("emp");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder empDescriptor =
TableDescriptorBuilder.newBuilder(emp);
ColumnFamilyDescriptor empfamily =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();// 构建列族对象
empDescriptor.setColumnFamily(empfamily); // 设置列族
admin.createTable(empDescriptor.build()); // 创建表
} finally {
admin.close();
}
} finally {
connection.close();
}
/********* End *********/
}
}

测试说明

注意:

点击测评之前,请先开启

Hadoop

start-dfs.sh

)和

HBase

start-hbase.sh

),并且需要等待

HBase

初始化完成(

20

秒左右),否则无法在

HBase

中创建表。

怎么查看

HBase

初始化成功了呢?

输入

hadoop fs -ls /hbase

有如下结果即可

如果启动过程中出现:

datanode running as process 214. Stop it first.

说明

Hadoop

的进程还没有被杀死。

需要我们重新

stop-dfs.sh

stop-hbase.sh

,然后在重启。

start-dfs.sh
start-hbase.sh
hadoop fs -ls /hbase

标签: hbase hadoop 大数据

本文转载自: https://blog.csdn.net/qq_61604164/article/details/128134803
版权归原作者 是草莓熊吖 所有, 如有侵权,请联系我们删除。

“HBase 开发:使用Java操作HBase 第1关:创建表”的评论:

还没有评论