Tablestore HBase Client は、HBase Client 1.0.0 以降の操作をサポートしています。このトピックでは、Tablestore HBase Client と 1.0 より前のバージョンの HBase Client の操作との互換性を確保する方法について説明します。
背景情報
以前のバージョンと比較して、HBase Client V1.0.0 には、以前のバージョンの HBase Client と互換性のない大きな変更がいくつかあります。
このトピックでは、操作を容易にするための主な変更点についても説明します。
接続操作
HConnection 操作は、HBase Client V1.0.0 以降では非推奨となっています。org.apache.hadoop.hbase.client.ConnectionFactory を使用して、接続操作を実装するクラスを作成し、非推奨の ConnectionManager および HConnectionManager を ConnectionFactory に置き換えることをお勧めします。
Connection オブジェクトの作成には、時間と労力がかかります。 Connection オブジェクトは、複数のスレッドで安全に共有できます。 1 つのプログラムで 1 つの Connection オブジェクトを作成できます。 複数のスレッドがオブジェクトを共有できます。
HBase Client V1.0.0 以降では、Connection オブジェクトのライフサイクルを管理し、オブジェクトが不要になった場合は Connection オブジェクトを閉じる必要があります。
次のコードは、Connection オブジェクトを作成および閉じるために使用される最新のコードです。
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();TableName クラス
1.0.0 より前の HBase Client バージョンでは、テーブルの作成時に String 型のテーブル名を使用できます。 1.0.0 以降の HBase Client バージョンでは、org.apache.hadoop.hbase.TableName クラスが必要です。
次のコードは、テーブルの名前を表す TableName オブジェクトを作成するために使用される最新のコードです。
String tableName = "MyTable";
// or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);Table、BufferedMutator、および RegionLocator の操作
HBase Client V1.0.0 以降では、HTable 操作は非推奨となり、Table、BufferedMutator、および RegionLocator の操作に置き換えられました。次の表に、Table、BufferedMutator、および RegionLocator の操作を示します。
操作 | 構成 | 説明 |
Table |
| 単一のテーブルに対する読み取りおよび書き込みリクエストの操作を実行するために使用されます。 |
BufferedMutator |
| 非同期バッチ書き込みリクエストに使用されます。この操作は、以前のバージョンの HTableInterface 操作の |
RegionLocator |
| テーブルパーティション情報。 |
Table、BufferedMutator、および RegionLocator の操作はスレッドセーフではありません。 Table、BufferedMutator、または RegionLocator オブジェクトの作成には、時間と労力はかかりません。 スレッドごとにオブジェクトを作成できます。
Admin 操作
HBaseAdmin 操作は、HBase Client V1.0.0 以降では org.apache.hadoop.hbase.client.Admin に置き換えられました。 Tablestore は、ほとんどの O&M 操作を自動的に処理するクラウドサービスです。そのため、ほとんどの Admin 操作は Tablestore ではサポートされていません。詳細については、「Tablestore HBase Client でサポートされている機能」をご参照ください。
次のコードは、Connection オブジェクトを使用して Admin オブジェクトを作成する方法を示しています。
Admin admin = connection.getAdmin();