我有一个hbase表,其中的行有时会被更新(显然,它们的时间戳也是如此)
我想知道是否有根据行的创建日期对行执行ttl的内置方法(所以,如果我用更新的版本更新了一行,它不会影响该行的删除时间?)
举个例子:2016年4月20日,将值为“aaa”的“row1”放在ttl为2天的表“test”上,然后如果我在第二天再次放置“row1”,该行仍将在2016年4月22日被删除(而不是像常规ttl功能那样在2016年4月23日被删除)
如果没有内置的方法,那么用我自己的代码(java、scala或其他什么)来执行这个任务的好方法是什么?我不认为我可以检索一个完整的表扫描到内存中,有没有任何方法可以懒洋洋地加载整个表?
提前谢谢
1条答案
按热度按时间bpsygsoo1#
从文件中:
columnfamilies可以以秒为单位设置ttl长度,一旦达到过期时间,hbase将自动删除行。这适用于行的所有版本-即使是当前版本。行的hbase中编码的ttl时间以utc为单位指定。
基于此,您可以在cf上设置ttl,一旦达到ttl,该行将被擦除。此行上的每次更新都将重置计时器,因此要不重置该行,需要使用相同的时间戳覆盖最后一次写入。