从google bigtable中删除空行的有效方法

Posted

技术标签:

【中文标题】从google bigtable中删除空行的有效方法【英文标题】:Efficient way of deleting a empty row from google bigtable 【发布时间】:2020-04-28 06:20:06 【问题描述】:

我们已经为 bigtable 中的列设置了过期时间。在一段时间内,不包含任何数据(仅键)的行数已经增加。我正在寻找一种从表中删除这些空行的有效方法。

例如:

键:key1 列 1:值 1(ttl 1 天) colum2:value2(ttl 1 天)

在我的用例中,一旦这两个值都被垃圾回收了。Key 没有任何重要性,所以这个键有资格进行垃圾回收。

【问题讨论】:

【参考方案1】:

您可以使用 Cloud Bigtable CLI documentation:

Delete a row:

Example: cbt deleterow <table-id> <row-key> app-profile=<app-profile-id>

Delete all rows:

cbt deleteallrows <table-id>

您可以根据documentation 选择使用 Cloud Bigtable 客户端库。


查看以下documentation,其中解释了 Cloud Bigtable 垃圾收集器,这是从 Cloud Bigtable 表中删除过期和过时数据的自动、持续过程。

请注意,数据被垃圾收集最多可能需要一周时间,您永远不应仅仅依靠垃圾收集策略来确保读取请求返回所需的数据。

编辑1:

根据年龄收集垃圾

您可以使用 cbt 命令行工具为列族中的数据设置最长期限(1 天)。

cbt createfamily your-table cf1

cbt setgcpolicy your-table cf1 maxage=1d

有关配置垃圾收集的更多信息,请访问documentation。

【讨论】:

谢谢,了解了不同的策略,其中大部分都围绕列只是想了解,如果我们也可以为行键设置任何策略。例如:如果超过一天没有包含任何值的单元格,则只需将其垃圾收集。 刚刚更新了我的答案。在配置垃圾回收之前,请确保您首先熟悉garbage collection overview。不要忘记,您还可以使用 Cloud Bigtable 客户端库来设置和/或更新垃圾回收政策。如果您不需要保留旧数据或当前数据的旧版本,使用垃圾回收可以帮助您最小化每行的大小。 不,您不能这样做,因为垃圾收集策略是在列族级别设置的。

以上是关于从google bigtable中删除空行的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

Google BigTable 是不是支持范围扫描?

从 BigTable 中删除与 BigTable 中的正则表达式匹配的行

无法使用 Google 的规范示例从 Bigtable 读取数据

从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是啥?

如何在 google bigtable 中创建 b-tree 索引

尝试从 Jupyter Notebook 使用 Spark 访问 Google Cloud Bigtable 时出现区域错误