從舊版 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 取代了已淘汰的 ConnectionManagerHConnectionManager 類別。

建立 Connection 物件的成本相對較高。您應該為每個程序建立一個 Connection 物件,並視需要共用該物件。Connection 物件是執行緒安全。

此外,在您使用完畢之後請務必將連線關閉。在 Hbase 1.0 以上版本,應用程式會負責管理連線的生命週期。

您更新的代碼應類似以下範例:

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

資料表名稱類別

在舊版 HBase 中,操作資料表時,您可以將資料表名稱指定為 Stringbyte[] 值。而在 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 類別已由下列介面取代:

您可以使用 Connection 物件來取得這些介面的執行個體:

Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);

TableBufferedMutatorRegionLocator 的執行個體並非執行緒安全。然而,這些是輕量物件,所以您可以視需要在單一執行緒的內容中建立這些物件。

管理員介面

在 HBase 1.0 中,HBaseAdmin 類別已由 org.apache.hadoop.hbase.client.Admin 介面取代。由於 Bigtable 會自動處理維護工作,因此系統不支援 Admin 介面中的許多方法。詳情請參閱 HBase 與 Bigtable API 的差異

使用 Connection 物件取得 Admin 介面的執行個體:

Admin admin = connection.getAdmin();