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取代已废弃的 ConnectionManager和HConnectionManager。
创建一个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、BufferedMutator和RegionLocator接口
从HBase Client 1.0.0开始,HTable接口已废弃,取而代之的是Table、BufferedMutator和RegionLocator三个接口。具体接口说明请参见下表。
接口 | 说明 |
| 用于操作单张表的读写等请求。 |
| 用于异步批量写,对应于旧版本 HTableInterface接口中的 |
| 表分区信息。 |
Table、BufferedMutator和RegionLocator三个接口均非线程安全的,但比较轻量,可以为每个线程创建一个对象。
Admin接口
从 HBase Client 1.0.0开始,新接口org.apache.hadoop.hbase.client.Admin
取代了HBaseAdmin类。由于表格存储是一个云服务,大多数运维类接口都是自动处理的,所以Admin接口中的众多接口都不会被支持,具体区别请参见Tablestore HBase Client支持的功能。
通过Connection实例创建Admin实例的示例如下:
Admin admin = connection.getAdmin();