为什么TTL forHbase表在列限定符上起作用,并且如果以后更新某些限定符,则不会删除完整的行。它仅删除超出TTL的列限定符。 这是所需的行为吗,如何在这种情况下删除完整的行?
答案 0 :(得分:0)
如果您在创建表时在 columnfamily
级别上定义了 TTL
(or)
通过使用 alter
命令,我们可以从HBase 删除整行。
Example:
1. Creating table with TTL:
hbase(main):> create 'ttl_tbl', {'NAME' => 'cf','TTL' => 20} //all rows will expire after 20 secs
hbase(main):> put 'ttl_tbl','row1','cf:desc', 'TTL shu'
hbase(main):> put 'ttl_tbl','row1','cf:desc1', 'TTL shu'
hbase(main):> scan 'ttl_tbl'
ROW COLUMN+CELL
row1 column=cf:desc, timestamp=1562101913869, value=TTL shu
row1 column=cf:desc1, timestamp=1562101914445, value=TTL shu
After 20 secs:
hbase(main):009:0> scan 'ttl_tbl'
ROW COLUMN+CELL
0 row(s)
2. Creating table without TTL:
hbase(main):010:0> create 'ttl_tbl1','cf'
hbase(main):011:0> put 'ttl_tbl1','row1','cf:desc','TTL shu',{TTL => 10000} //this row will be deleted after 10 sec as TTL on qualifier is in milliseconds
hbase(main):012:0> put 'ttl_tbl','row1','cf:desc1', 'TTL shu' //no ttl will not be deleted.