Tablestore HBase Client 目前支援 HBase Client 1.0.0 及以上版本的 API。本文主要為您介紹Tablestore HBase Client 如何相容Hbase 1.0以前的版本的API。
HBase Client 1.0.0 版本相對於之前版本有一些較大的變化,這些變化是不相容的。
為了協助一些使用老版本 HBase 的使用者能方便地使用Tablestore,本節我們將介紹 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 三個介面。
-
org.apache.hadoop.hbase.client.Table
:用於操作單張表的讀寫等請求。 -
org.apache.hadoop.hbase.client.BufferedMutator
:用於非同步批量寫,對應於舊版本 HTableInterface 介面中的setAutoFlush(boolean)
。 -
org.apache.hadoop.hbase.client.RegionLocator
:表分區資訊。
Table、BufferedMutator 和 RegionLocator 三個介面都不是安全執行緒的,但比較輕量,可以為每個線程建立一個對象。
Admin 介面
從 HBase Client 1.0.0 開始,新介面org.apache.hadoop.hbase.client.Admin
取代了HBaseAdmin 類。由於Tablestore是一個雲端服務,大多數營運類介面都是自動處理的,所以 Admin 介面中的眾多介面都不會被支援,具體區別請參見Tablestore和 HBase 的區別。
通過 Connection 執行個體建立 Admin 執行個體:
Admin admin = connection.getAdmin();