如何兼容HBase 1.0以前的版本

Tablestore HBase Client目前支持HBase Client 1.0.0及以上版本的API。本文介绍Tablestore HBase Client如何兼容HBase 1.0以前的版本的API。

背景信息

HBase Client 1.0.0版本相对于之前版本有一些较大的变化,这些变化是不兼容的。

为了协助一些使用老版本HBase的用户能方便地使用表格存储,本文将介绍HBase 1.0相较于旧版本的一些较大变化以及如何使其兼容。

Connection接口

HBase 1.0.0及以上的版本中废除了HConnection接口,并推荐使用org.apache.hadoop.hbase.client.ConnectionFactory类,创建一个实现Connection接口的类,用ConnectionFactory取代已废弃的 ConnectionManagerHConnectionManager。

创建一个Connection的代价比较大,但Connection是线程安全的。使用时可以在程序中只生成一个Connection对象,多个线程可以共享该对象。

HBase 1.0.0及以上的版本中,您需要管理Connection的生命周期,并在使用完以后将其它close。

最新的代码如下所示:

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

TableName

HBase 1.0.0之前的版本中,创建表时可以使用String类型的表名,但是HBase 1.0.0之后需要使用类 org.apache.hadoop.hbase.TableName

最新的代码如下所示:

String tableName = "MyTable";
// or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);

Table、BufferedMutatorRegionLocator接口

HBase Client 1.0.0开始,HTable接口已废弃,取而代之的是Table、BufferedMutatorRegionLocator三个接口。具体接口说明请参见下表。

接口

说明

org.apache.hadoop.hbase.client.Table

用于操作单张表的读写等请求。

org.apache.hadoop.hbase.client.BufferedMutator

用于异步批量写,对应于旧版本 HTableInterface接口中的setAutoFlush(boolean)

org.apache.hadoop.hbase.client.RegionLocator

表分区信息。

Table、BufferedMutatorRegionLocator三个接口均非线程安全的,但比较轻量,可以为每个线程创建一个对象。

Admin接口

从 HBase Client 1.0.0开始,新接口org.apache.hadoop.hbase.client.Admin取代了HBaseAdmin类。由于表格存储是一个云服务,大多数运维类接口都是自动处理的,所以Admin接口中的众多接口都不会被支持,具体区别请参见Tablestore HBase Client支持的功能

通过Connection实例创建Admin实例的示例如下:

Admin admin = connection.getAdmin();