在 Bigtable 中创建和更新计数器
了解如何使用汇总(在写入时汇总值的表格单元格)在 Bigtable 中创建和更新计数器。本快速入门将使用 Google Cloud CLI 和 cbt
CLI 创建三个计数器:
- 用于保持累计总和的计数器
- 用于跟踪所有添加值的最小值的计数器
- 用于跟踪所有添加值的最大值的计数器
准备工作
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install cbt -
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:
gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install cbt -
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Bigtable API and Cloud Bigtable Admin API APIs:
gcloud services enable bigtable.googleapis.com
bigtableadmin.googleapis.com - 运行以下命令,确保 gcloud CLI 是最新的,并且包含
cbt
CLI:gcloud components update
gcloud 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"
连接到您的实例
将
cbt
CLI 配置为使用您的项目和实例,方法是创建一个.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
现在,您可以使用
cbt
CLI 来处理您的实例了。
创建包含汇总列族的表
使用
cbt createtable
命令创建一个名为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
命令,将初始值5
写入三个列族中的每个新列,并使用行键row-key1
和时间戳0
。此操作会创建汇总单元格,您可以将其用作计数器。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
文件,供cbt
CLI 用于设置输出格式。运行以下命令: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.yaml
sum_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
可选:使用 SQL 在 Google Cloud 控制台中查询表。
在 Google Cloud 控制台中,打开 Bigtable 实例页面。
从列表中选择
counters-quickstart-instance
。在导航菜单中,点击 Bigtable Studio。
点击 Editor(编辑器)标签页。
将以下查询粘贴到编辑器中:
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