有人可以告诉我如何在 Google Cloud Platform 中同时为 bigtable 表设置
maxage
和 maxversions
策略吗?我尝试使用以下命令,但表中仅反映了一项策略。我需要设置这两项政策。
我使用的命令:
cbt -project <project_name> -instance <instance_name> setgcpolicy <table_name> <column_family> maxage=30d maxversions=100
cbt -project <project_name> -instance <instance_name> setgcpolicy <table_name> <column_family> "maxage=30d" && "maxversions=100"
cbt -project <project_name> -instance <instance_name> setgcpolicy <table_name> <column_family> maxage=30d and maxversions=100
cbt -project <project_name> -instance <instance_name> setgcpolicy <table_name> <column_family> maxage=30d|maxversions=100
我制定的下一个
setgcpolicy
政策只是覆盖之前的政策。
预期输出应如下 -
cbt -project <project_name> -instance <instance_name> ls <table_name>
Family Name GC Policy
----------- ---------
rec (age() > 30d || versions() > 100)
您能否指导我如何实现上述输出 仅供参考,对于所有尝试/命令,我只看到下面的输出,其中仅显示一个策略集。
Family Name GC Policy
----------- ---------
demoSeg versions() > 1
<columne_family> age() > 30d
您能指导我这个要求吗?
我认为你需要更新你的 CBT 工具。设置多个垃圾收集的功能是在过去几个月中添加的,因此您可能从那时起就没有更新过。
运行此命令来更新您的工具:
gcloud components update
我使用的版本是“cbt 0.9.0 6ab8d8ff 2020-02-07 17:57:00”,并且我能够使用您指定的命令成功执行此操作:
bigtable[master]$ cbt createtable gc-test
bigtable[master]$ cbt createfamily gc-test cf
bigtable[master]$ cbt setgcpolicy gc-test cf maxage=30d and maxversions=100
bigtable[master]$ cbt ls gc-test
Family Name GC Policy
----------- ---------
cf (age() > 30d && versions() > 100)
此外,当使用 || 时和 && 作为您的策略定义,而不是“和”/“或”,您应该将整个策略放在引号中(此处有更多信息):
cbt -project <project_name> -instance <instance_name> setgcpolicy <table_name> <column_family> "maxage=30d && maxversions=100"