升級用戶端程式庫

升級 Java 適用的 Cloud Bigtable 用戶端程式庫、Java 適用的 HBase 和 Go,即可從過時的方法遷移,並採用目前的連線和通訊協定緩衝區模式。如需首次安裝用戶端程式庫,請按照「Bigtable 用戶端程式庫」頁面中,您偏好程式設計語言的指示操作。

Java 適用的 Bigtable 用戶端

BigtableTableAdminClient 和 BigtableInstanceAdminClient 中的便利方法已過時。

如要升級程式碼,請按照下列步驟操作:

  1. 使用靜態 create() 工廠方法,例項化 V2 用戶端 BigtableTableAdminClientV2 和 BigtableInstanceAdminClientV2。
  2. 將自訂包裝函式要求物件 (例如 com.google.cloud.bigtable.admin.v2.models.CreateTableRequest) 替換為標準通訊協定緩衝區要求物件 (例如 com.google.bigtable.admin.v2.CreateTableRequest)。
  3. 請確保新的標準通訊協定緩衝區要求物件使用完整合格的資源名稱。
  4. 直接在新版 V2 用戶端呼叫標準通訊協定緩衝區方法。
  5. 將程式碼中的預留位置變數替換成 ID,如下列範例所示:

    // Existing code
    BigtableTableAdminClient adminClient = BigtableTableAdminClient.create(PROJECT_ID, INSTANCE_ID);
    adminClient.createTable(
        CreateTableRequest.of(TABLE_ID)
            .addFamily("cf1"));
    
    // New code
    import com.google.bigtable.admin.v2.ColumnFamily;
    import com.google.bigtable.admin.v2.CreateTableRequest;
    import com.google.bigtable.admin.v2.Table;
    import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2;
    
    // ...
    
    try (BigtableTableAdminClientV2 adminClient = BigtableTableAdminClientV2.create()) {
      String parent = "projects/" + PROJECT_ID + "/instances/" + INSTANCE_ID;
      CreateTableRequest request =
          CreateTableRequest.newBuilder()
              .setParent(parent)
              .setTableId(TABLE_ID)
              .setTable(Table.newBuilder()
                  .putColumnFamilies("cf1", ColumnFamily.getDefaultInstance())
                  .build())
              .build();
      adminClient.createTable(request);
    }
    

    更改下列內容:

    • PROJECT_ID:Bigtable 專案的 ID
    • INSTANCE_ID:Bigtable 執行個體的 ID
    • TABLE_ID:新資料表的 ID

Java 適用的 HBase 用戶端

如果您是從 HBase Java 用戶端的1.0 以上版本升級,唯一需要進行的變更就是更新設定中的版本號碼。並不需要更新程式碼。

如果您是要從 1.0 版本之前的 HBase 用戶端進行升級,請完成下列步驟:

  1. 更新依附元件以使用最新的用戶端程式庫,並移除不再需要的成果:

    • 從依附元件中移除 bigtable-hbase-1.0、bigtable-hbase-1.1 和 bigtable-hbase-1.2 構件 (如有)。

    • 從依附元件中移除 netty-tcnative-boringssl-static,除非應用程式的其他部分需要該元件。

    • 視用途而定,將下列其中一個構件新增至依附元件。2.x 版本包含 HBase 非同步用戶端,1.x 版本則沒有。

      • bigtable-hbase-1.x 或 bigtable-hbase-2.x:適用於獨立應用程式,可控管依附元件。
      • bigtable-hbase-1.x-hadoop 或 bigtable-hbase-2.x-hadoop:在 Hadoop 環境中使用。
      • bigtable-hbase-1.x-shaded 或 bigtable-hbase-2.x-shaded:在 Hadoop 以外的環境中使用,這些環境需要較舊版本的元件,例如 protobuf 或 Guava。
  2. 更新設定,以便連線至 Bigtable。

    • 如果程式碼或 hbase-site.xml 檔案中的設定包含 hbase.client.connection.impl 的值,請將該值變更為 com.google.cloud.bigtable.hbase1_x.BigtableConnection。

    • 如果您直接使用 BigtableConnection 類別,請更新程式碼,改用 com.google.cloud.bigtable.hbase1_x.BigtableConnection。

    • 如果使用 hbase-site.xml 檔案連線至 Bigtable:

      • 如果沒有 google.bigtable.instance.id 屬性,請新增該屬性。並將屬性值設定為執行個體 ID。
      • 如果存在,請移除 google.bigtable.cluster.name 屬性。
      • 移除 google.bigtable.zone.name 屬性 (如有)。
    • 如果您是透過呼叫 BigtableConfiguration.connect() 連線至 Bigtable,請更新程式碼,如以下範例所示:

    // Existing code
    BigtableConfiguration.connect(PROJECT_ID, ZONE_ID, CLUSTER_ID);
    
    // New code
    BigtableConfiguration.connect(PROJECT_ID, INSTANCE_ID);
    

    更改下列內容:

    • PROJECT_ID:專案的 ID。
    • ZONE_ID:叢集所在的可用區。
    • CLUSTER_ID:叢集 ID。
    • INSTANCE_ID:執行個體的 ID。
  3. 在本機開發、測試、暫存和實際工作環境等所有環境中重新部署應用程式。

如需 Java 適用的 HBase 用戶端的版本清單,請參閱 GitHub 中的版本記錄。

Go

2016 年 6 月,Go 用戶端變更了連線至 Bigtable 的方式。請指定執行個體 ID,而非叢集 ID 和可用區。如要找出執行個體 ID,請前往Google Cloud 控制台。

如要下載用戶端程式庫,請造訪 GitHub 的程式碼存放區。

如以下範例所示更新程式碼:

  // Existing code
  adminClient, err := bigtable.NewAdminClient(ctx, PROJECT_ID, ZONE, CLUSTER_ID)
  client, err := bigtable.NewClient(ctx, PROJECT_ID, ZONE, CLUSTER_ID)

  // New code
  adminClient, err := bigtable.NewAdminClient(ctx, PROJECT_ID, INSTANCE_ID)
  client, err := bigtable.NewClient(ctx, PROJECT_ID, INSTANCE_ID)

更改下列內容:

  • PROJECT_ID:專案的 ID。
  • ZONE:叢集所在的可用區。
  • CLUSTER_ID:要連線的叢集 ID。
  • INSTANCE_ID:要連線的執行個體 ID。

如需 Go 用戶端程式庫的版本清單,請參閱 GitHub 中的版本記錄。

後續步驟