从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中删除空行的有效方法的主要内容,如果未能解决你的问题,请参考以下文章
从 BigTable 中删除与 BigTable 中的正则表达式匹配的行
无法使用 Google 的规范示例从 Bigtable 读取数据
从 google appengine 数据存储迁移到 google cloud bigtable 的最佳方法是啥?
如何在 google bigtable 中创建 b-tree 索引
尝试从 Jupyter Notebook 使用 Spark 访问 Google Cloud Bigtable 时出现区域错误