在 Bigtable 中创建和更新计数器
了解如何使用 Bigtable 中的 汇总(即在写入时汇总值的表单元格)创建和更新计数器。本快速入门使用
Google Cloud CLI 和
cbt CLI
创建三个计数器:
- 一个用于记录运行总和的计数器
- 一个用于跟踪所有添加值的最小值的计数器
- 一个用于跟踪所有添加值的最大值的计数器
准备工作
-
登录您的 Google 账号。
如果您还没有 Google 账号,请 注册新账号。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
初始化 gcloud CLI 后,对其进行更新并安装所需组件:
gcloud components update gcloud components install cbt
-
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
验证是否已为您的 Google Cloud 项目启用结算功能。
启用 Cloud Bigtable API 和 Cloud Bigtable Admin API API:
启用 API 所需的角色
如需启用 API,您需要 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予 角色。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com -
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
初始化 gcloud CLI 后,对其进行更新并安装所需组件:
gcloud components update gcloud components install cbt
-
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
验证是否已为您的 Google Cloud 项目启用结算功能。
启用 Cloud Bigtable API 和 Cloud Bigtable Admin API API:
启用 API 所需的角色
如需启用 API,您需要 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予 角色。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - 运行以下命令,确保 gcloud CLI 是最新版本,并且包含
cbtCLI:gcloud components updategcloud components install cbt
创建 Bigtable 实例。
使用
bigtable instances create命令 创建 实例。gcloud bigtable instances create counters-quickstart-instance \ --display-name="Counters quickstart instance" \ --cluster-config=id="counters-quickstart-cluster",zone="us-east1-c"
连接到您的实例
将
cbtCLI 配置为使用您的项目和 实例,方法是创建一个.cbtrc文件。echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc将 PROJECT_ID 替换为您要使用的项目的 ID。
验证您是否正确设置了
.cbtrc文件。cat ~/.cbtrc终端会显示
.cbtrc文件的内容,如下所示:project = PROJECT_ID instance = counters-quickstart-instance
现在,您可以使用
cbtCLI 和您的实例了。
创建包含汇总列族的表
使用
cbt createtablecommand 创建一个名为counters_quickstart_table且包含三个 汇总列族的表。为每个列族配置不同的汇总类型:- 列族
max_family的类型为Max,输入类型为Integer。 - 列族
min_family的类型为Min,输入类型为Integer。 - 列族
sum_family的类型为Sum,输入类型为Integer。
cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax- 列族
运行
cbt ls命令,列出您的列族。cbt ls counters_quickstart_table该 shell 会显示类似如下所示的输出:
Family Name GC Policy ----------- --------- max_family <never> min_family <never> sum_family <never>
在表中创建计数器
使用
cbt addtocell命令,使用行键row-key1和时间戳0,将初始值5写入到 三个列族中每个列族的新列中。 此操作会创建汇总单元格,您可以使用这些单元格作为计数器。cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=5@0 cbt addtocell counters_quickstart_table row-key1 min_family:min_column=5@0 cbt addtocell counters_quickstart_table row-key1 max_family:max_column=5@0
读取数据
如需以整数而非字节的形式查看计数器值,请定义一个
yaml文件,cbtCLI 可使用该文件来设置输出格式。运行以下命令:echo "families:" > cbtformat.yaml echo " max_family:" >> cbtformat.yaml echo " default_encoding: BigEndian" >> cbtformat.yaml echo " default_type: INT64" >> cbtformat.yaml echo " min_family:" >> cbtformat.yaml echo " default_encoding: BigEndian" >> cbtformat.yaml echo " default_type: INT64" >> cbtformat.yaml echo " sum_family:" >> cbtformat.yaml echo " default_encoding: BigEndian" >> cbtformat.yaml echo " default_type: INT64" >> cbtformat.yaml验证您是否正确设置了
cbtformat.yaml文件。cat ~/cbtformat.yaml终端会显示
cbtformat.yaml文件的内容,如下所示:families: max_family: default_encoding: BigEndian default_type: INT64 min_family: default_encoding: BigEndian default_type: INT64 sum_family: default_encoding: BigEndian default_type: INT64使用
cbt read命令传递yaml文件,并读取您已添加到表中的数据。该表现在有三列,每列都有不同的汇总类型。cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml该 shell 会显示类似如下所示的输出。这些值的格式为整数,时间戳采用 UTC 格式。
row-key1 max_family:max_column @ 1970/01/01-00:00:00.000000 5 min_family:min_column @ 1970/01/01-00:00:00.000000 5 sum_family:sum_column @ 1970/01/01-00:00:00.000000 5
更新计数器
使用您在创建单元格时使用的相同时间戳 ,向表中的每一列添加值 3。在每一列中,单元格值会根据单元格的汇总类型与现有值合并。
cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=3@0 cbt addtocell counters_quickstart_table row-key1 min_family:min_column=3@0 cbt addtocell counters_quickstart_table row-key1 max_family:max_column=3@0再次使用
cbt read命令读取表中的数据。每个单元格现在都包含一个汇总值。cbt read counters_quickstart_table format-file=$HOME/cbtformat.yamlsum_column包含 5 和 3 的总和 (8),min_column包含写入其中的两个值的最小值 (3),max_column包含写入其中的两个值的最大值 (5)。row-key1 max_family:max_column @ 1970/01/01-00:00:00.000000 5 min_family:min_column @ 1970/01/01-00:00:00.000000 3 sum_family:sum_column @ 1970/01/01-00:00:00.000000 8可选:在 Google Cloud 控制台中通过 SQL 查询表。
在 Google Cloud 控制台中,打开 Bigtable 实例 页面。
从列表中选择
counters-quickstart-instance。在导航菜单中,点击 Bigtable Studio 。
点击编辑器 选项卡。
将以下查询粘贴到编辑器中:
SELECT * FROM `counters_quickstart_table`点击运行 。查询结果会显示在结果 表中,如下所示:
_key max_family min_family sum_family row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
在终端中,删除表
counters_quickstart_table:cbt deletetable counters_quickstart_table删除实例:
cbt deleteinstance counters-quickstart-instance删除
.cbtrc文件:rm ~/.cbtrc删除格式设置文件:
rm ~/cbtformat.yaml(可选)使用 gcloud CLI 撤消凭据:
gcloud auth revoke