升级客户端库

本页面介绍了如何升级以前安装的 Cloud Bigtable 客户端库。如果您是第一次需要安装客户端库, 请按照 Cloud Bigtable 客户端库中首选编程语言的相关说明进行操作。

Java 版 Bigtable 客户端

BigtableTableAdminClientBigtableInstanceAdminClient 中的便捷方法已过时。

如需升级代码,请按以下步骤操作:

  1. 使用静态 create() 工厂方法实例化 V2 客户端 BigtableTableAdminClientV2BigtableInstanceAdminClientV2
  2. 将自定义封装容器请求对象(例如 com.google.cloud.bigtable.admin.v2.models.CreateTableRequest)替换为标准协议缓冲区请求对象(例如 com.google.bigtable.admin.v2.CreateTableRequest)。
  3. 确保新的标准协议缓冲区请求对象使用完全限定的资源名称。
  4. 直接对新的 V2 客户端调用标准协议缓冲区方法。
  5. 将代码中的占位符变量替换为标识符,如以下示例所示:

    // 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 项目的标识符
    • INSTANCE_ID:Bigtable 实例的标识符
    • TABLE_ID:新表的标识符

Java 版 HBase 客户端

如果您要从 1.0 版或更高版本Java HBase 客户端进行升级,则只需更新配置中的版本号,您无需更新代码。

如果要从 1.0 版之前的 HBase 客户端升级,请完成以下步骤:

  1. 更新依赖项以使用最新的客户端库并移除不再需要的工件:

    • 从依赖项中移除 bigtable-hbase-1.0bigtable-hbase-1.1bigtable-hbase-1.2 工件(如果存在)。

    • 从依赖项中移除 netty-tcnative-boringssl-static,除非应用的其他部分需要它。

    • 根据您的应用场景,将以下工件之一添加到依赖项。2.x 版本包含 1.x 版本所不具备的 HBase 异步客户端。

      • bigtable-hbase-1.xbigtable-hbase-2.x:用于由您控制依赖项的独立应用。
      • bigtable-hbase-1.x-hadoopbigtable-hbase-2.x-hadoop:在 Hadoop 环境中使用。
      • bigtable-hbase-1.x-shadedbigtable-hbase-2.x-shaded:在需要旧版组件(例如 protobufGuava)的非 Hadoop 环境中使用。
  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:项目的标识符。
    • ZONE_ID:集群所在的可用区。
    • CLUSTER_ID:集群的标识符。
    • INSTANCE_ID:实例的标识符。
  3. 在所有环境(包括本地开发环境、测试环境、模拟环境和生产环境)中重新部署应用

如需查看 Java 版 HBase 客户端的版本列表,请参阅 GitHub 上的版本历史记录

Go

2016 年 6 月,Go 客户端更改了连接到 Bigtable 的方式。您无需指定集群 ID 和地区,只需指定实例 ID 即可。您可以前往控制台 Google Cloud 来找到实例 ID

要下载客户端库,请访问 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:项目的标识符。
  • ZONE:集群所在的可用区。
  • CLUSTER_ID:要连接的集群的标识符。
  • INSTANCE_ID:要连接的实例的标识符。

如需查看 Go 客户端库的版本列表,请参阅 GitHub 上的版本历史记录

后续步骤