Tablestore HBase クライアントは、HBase クライアント 1.0.0 以降の API をサポートしています。このトピックでは、Tablestore HBase クライアントで 1.0 より前の HBase バージョンの API との互換性を確保する方法について説明します。
背景情報
HBase クライアント 1.0.0 では、以前のバージョンと互換性のない大きな変更が導入されました。
このトピックでは、HBase 1.0 における主な変更点を説明し、古い HBase バージョンを使用しているユーザーが Tablestore を使用する際に互換性を確保する方法を解説します。
Connection インターフェイス
HBase 1.0.0 以降では、HConnection インターフェイスは非推奨です。代わりに、org.apache.hadoop.hbase.client.ConnectionFactory クラスを使用して、Connection インターフェイスを実装するオブジェクトを作成できます。このファクトリは、非推奨となった ConnectionManager と HConnectionManager の代替です。
Connection オブジェクトの作成は高コストな操作です。ただし、Connection オブジェクトはスレッドセーフです。そのため、プログラム内で単一の Connection オブジェクトを作成し、複数のスレッドで共有できます。
HBase 1.0.0 以降では、Connection オブジェクトのライフサイクルを管理し、使用後に接続をクローズする必要があります。
最新のコードは次のとおりです:
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();
TableName クラス
HBase 1.0.0 より前のバージョンでは、テーブルの作成時に文字列を使用してテーブル名を指定できます。HBase 1.0.0 以降では、org.apache.hadoop.hbase.TableName クラスを使用する必要があります。
最新のコードは次のとおりです:
String tableName = "MyTable";
// または byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);
Table、BufferedMutator、RegionLocator インターフェイス
HBase クライアント 1.0.0 以降では、HTable インターフェイスは非推奨です。代わりに、Table、BufferedMutator、RegionLocator インターフェイスが使われるようになりました。次の表で、これらのインターフェイスについて説明します。
|
インターフェイス |
説明 |
|
|
単一のテーブルに対して、読み取り、書き込み、その他の操作を実行します。 |
|
|
非同期バッチ書き込み操作を実行します。これは、以前のバージョンの HTableInterface における |
|
|
テーブルパーティションに関する情報を提供します。 |
Table、BufferedMutator、RegionLocator インターフェイスはスレッドセーフではありません。ただし、軽量です。スレッドごとに個別のオブジェクトを作成できます。
Admin インターフェイス
HBase Client 1.0.0 以降では、新しい org.apache.hadoop.hbase.client.Admin インターフェースが HBaseAdmin クラスに置き換わりました。Tablestore は、ほとんどの O&M 操作を自動的に処理する Alibaba Cloud サービスであるため、Admin インターフェースの多くのメソッドはサポートされていません。詳細については、「Tablestore HBase Client でサポートされる機能」をご参照ください。
次のコードは、Connection インスタンスから Admin インスタンスを作成する例を示しています:
Admin admin = connection.getAdmin();