從舊版 HBase 遷移
適用 Java 的 Cloud Bigtable HBase 用戶端適用於 Apache HBase API 的 1.x 和 2.x 版。與舊版 HBase 相比,API 1.0 版包含一些重大變更。如果您要從 HBase 遷移至 Bigtable,且應用程式是以舊版 HBase API 為目標,則必須更新應用程式,才能與 Bigtable 相容。
為了協助您進行遷移,此頁面概述了 HBase 1.0 API 的重大變更。
與介面連結
在 HBase 1.0 或更新版本中,您不應使用已淘汰的 HConnection
介面,而應該改用 org.apache.hadoop.hbase.client.ConnectionFactory
。這個類別可建立導入全新 Connection
介面的物件。ConnectionFactory
取代了已淘汰的 ConnectionManager
和 HConnectionManager
類別。
建立 Connection
物件的成本相對較高。您應該為每個程序建立一個 Connection
物件,並視需要共用該物件。Connection
物件是執行緒安全。
此外,在您使用完畢之後請務必將連線關閉。在 Hbase 1.0 以上版本,應用程式會負責管理連線的生命週期。
您更新的代碼應類似以下範例:
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();
資料表名稱類別
在舊版 HBase 中,操作資料表時,您可以將資料表名稱指定為 String
或 byte[]
值。而在 HBase 1.0 或更新版本中,則必須建立 org.apache.hadoop.hbase.TableName
的執行個體來指定資料表名稱:
String tableName = "MyTable";
// or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);
資料表、緩衝賦值方法 以及地區定位器介面
在 HBase 1.0 中,HTable
類別已由下列介面取代:
org.apache.hadoop.hbase.client.Table
:可讓您處理單一資料表中的資料。org.apache.hadoop.hbase.client.BufferedMutator
:可讓您針對資料表執行非同步批次寫入作業。請使用這個類別,不要在HTableInterface
中呼叫setAutoFlush(boolean)
方法。org.apache.hadoop.hbase.client.RegionLocator
:提供關於資料表地區資訊的存取權限。
您可以使用 Connection
物件來取得這些介面的執行個體:
Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);
Table
、BufferedMutator
和 RegionLocator
的執行個體並非執行緒安全。然而,這些是輕量物件,所以您可以視需要在單一執行緒的內容中建立這些物件。
管理員介面
在 HBase 1.0 中,HBaseAdmin
類別已由 org.apache.hadoop.hbase.client.Admin
介面取代。由於 Bigtable 會自動處理維護工作,因此系統不支援 Admin
介面中的許多方法。詳情請參閱 HBase 與 Bigtable API 的差異。
使用 Connection
物件取得 Admin
介面的執行個體:
Admin admin = connection.getAdmin();