從較早 HBase 版本遷移

適用 Java 的 Cloud Bigtable HBase 用戶端需搭配 Apache HBase 1.0 API 以上版本。API 1.0 版本包含一些過去版本 HBase 所沒有的重大變更。若您要從 HBase 遷移至 Cloud Bigtable,且您的應用程式目標指定舊版本的 HBase API,您需要更新您的應用程式,以與 Cloud 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);

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

管理員介面

在 HBase 1.0 中,HBaseAdmin 類別已由 org.apache.hadoop.hbase.client.Admin 介面取代。因為 Cloud Bigtable 會自動處理維護任務,在 Admin 介面的很多方法皆不支援。詳情請參閱 HBase 與 Cloud BigTable API 的差異

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

Admin admin = connection.getAdmin();
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Bigtable 說明文件