我有一个HBase表,其行有时会更新(显然他们的时间戳也是如此)
我想知道是否有根据行的创建日期在行上执行TTL的内置方法? (所以如果我用更新版本更新了一行,它不会影响该行的删除时间吗?)
举个例子:在2016年4月20日将'row1'的值设为'aaa' 在TTL为2天的桌子上'测试',然后如果我在第二天再次执行'row1',那么该行仍将在2016年4月22日删除(而不是在2016年4月23日那样的常规TTL功能确实)
如果没有内置方式,使用我自己的代码(Java,scala或其他)执行此操作的好方法是什么?我不认为我可以将全表扫描检索到内存中,是否有任何方法可以延迟加载整个表?
提前致谢
答案 0 :(得分:1)
来自doc:
ColumnFamilies可以设置TTL长度(以秒为单位),HBase将在到达到期时间后自动删除行。这适用于行的所有版本 - 即使是当前版本。 HBase中为行编码的TTL时间以UTC格式指定。
基于此,您可以在CF上设置ttl,一旦达到ttl,该行将被擦除。此行上的每次更新都将重置计时器,因此不要重置使用相同时间戳覆盖最后一次写入所需的行。