在 Bigtable 中创建和更新计数器
了解如何使用汇总(在写入时汇总值的表单元格)在 Bigtable 中创建和更新计数器。本快速入门使用Google Cloud 控制台、Google Cloud CLI 或 cbt CLI 创建以下计数器:
- 用于保持运行总和的计数器
- 一个用于跟踪所有添加值的最小值的计数器
- 一种用于跟踪所有已添加值的最大值的计数器
准备工作
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 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 项目名称。
启用 Cloud Bigtable API 和 Cloud Bigtable Admin API API:
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - 运行以下命令,确保 gcloud CLI 是最新版本,并且包含
cbtCLI:gcloud components updategcloud components install cbt
创建 Bigtable 实例。
控制台
在 Google Cloud 控制台中,前往创建实例页面。
在实例名称字段中,输入
Counters quickstart instance。在实例 ID 字段中,输入
counters-quickstart-instance。点击继续。
在选择版本部分,选择企业版。
点击继续。
在存储类型部分中,选择 SSD。
点击继续。
在集群 ID 字段中,输入
counters-quickstart-cluster。在区域列表中,选择 us-east1(南卡罗来纳)。
在可用区列表中,选择 us-east1-c。
在节点伸缩部分中,选择自动伸缩,然后执行以下操作:
- 对于节点数下限,请输入
1。 - 对于节点数上限,请输入
3。
- 对于节点数下限,请输入
点击创建以创建实例。
gcloud
使用
bigtable instances create命令创建一个实例。gcloud bigtable instances create counters-quickstart-instance \ --display-name="Counters quickstart instance" \ --edition=ENTERPRISE \ --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 来处理您的实例了。
创建包含汇总列族的表
控制台
在 Google Cloud 控制台的左侧导航窗格中,点击表。
点击 创建表。
在 Table ID 字段中,输入
counters_quickstart_table。在列族下,对于要添加的每个列族,点击添加列族,然后输入以下设置:
sum_family:- 在列族名称字段中,输入
sum_family。 - 在列族类型部分中,选择汇总。
- 在聚合器列表中,选择总和。
- 在设置垃圾回收政策部分中,选择永不回收垃圾。
- 点击完成。
- 在列族名称字段中,输入
min_family:- 在列族名称字段中,输入
min_family。 - 在列族类型部分中,选择汇总。
- 在聚合器列表中,选择最小值。
- 在设置垃圾回收政策部分中,选择永不回收垃圾。
- 点击完成。
- 在列族名称字段中,输入
max_family:- 在列族名称字段中,输入
max_family。 - 在列族类型部分中,选择汇总。
- 在聚合器列表中,选择上限。
- 在设置垃圾回收政策部分中,选择永不回收垃圾。
- 点击完成。
- 在列族名称字段中,输入
点击创建。
如需查看新的列族及其汇总配置,请执行以下操作:
- 在导航菜单中,点击 Bigtable Studio。
- 在左侧的对象资源管理器树中,依次展开表、
counters_quickstart_table和列族。
cbt
使用
cbt createtable命令创建一个名为counters_quickstart_table且包含三个汇总列族的表。为每个列族配置不同的聚合类型:- 列族
max_family的类型为Max,输入类型为Int64。 - 列族
min_family的类型为Min,输入类型为Int64。 - 列族
sum_family的类型为Sum,输入类型为Int64。
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
读取数据
您可以在 Google Cloud 控制台中通过 SQL 查询从表中读取数据,也可以使用 cbt CLI 读取数据。
在 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": 5 }
通过 cbt CLI 进行读取
如需以整数而非字节的形式查看计数器值,请定义一个 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 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
控制台
删除
counters_quickstart_table表:在 Google Cloud 控制台中,前往 Bigtable 实例页面。
在实例列表中,点击 Counters 快速入门实例。
在左侧导航窗格中,点击表。
点击
counters_quickstart_table旁边的 ,然后点击删除。输入
counters_quickstart_table进行确认,然后点击删除。
删除实例:
在 Google Cloud 控制台中,前往 Bigtable 实例页面。
点击 Counters quickstart instance。
点击删除实例。
输入
counters-quickstart-instance进行确认,然后点击删除。
在终端中,删除配置文件和可选凭据:
删除
.cbtrc文件:rm ~/.cbtrc删除格式化文件:
rm ~/cbtformat.yaml(可选)使用 gcloud CLI 撤消凭据:
gcloud auth revoke
cbt
在终端中,删除表
counters_quickstart_table:cbt deletetable counters_quickstart_table删除实例:
cbt deleteinstance counters-quickstart-instance删除
.cbtrc文件:rm ~/.cbtrc删除格式化文件:
rm ~/cbtformat.yaml(可选)使用 gcloud CLI 撤消凭据:
gcloud auth revoke