为什么HBase Delete会恢复到以前的值,而不是完全删除它

为什么HBase Delete会恢复到以前的值,而不是完全删除它,hbase,Hbase,假设我有一个名为signup\u date的列,其值为2019-09-09。然后我将此列更新为2019-11-11。所以注册日期现在是2019-11-11 之后,如果我删除signup\u date列,我希望它会在Hbase中消失,但它会保留在那里,并恢复到2019-09-09 这是hbase中的一个错误,删除的列会恢复到以前的值吗?是否在表中为列族指定了版本和最小版本?假设您将minu VERSIONS指定为3,那么每次覆盖现有数据时,它都将存储为另一个版本。因此,基本上,当您删除列时,它只是

假设我有一个名为
signup\u date
的列,其值为
2019-09-09
。然后我将此列更新为2019-11-11。所以注册日期现在是2019-11-11

之后,如果我删除
signup\u date
列,我希望它会在Hbase中消失,但它会保留在那里,并恢复到
2019-09-09


这是hbase中的一个错误,删除的列会恢复到以前的值吗?

是否在表中为列族指定了版本和最小版本?假设您将minu VERSIONS指定为3,那么每次覆盖现有数据时,它都将存储为另一个版本。因此,基本上,当您删除列时,它只是删除了最新版本,当您获得该列的值时,它将显示以前的版本。这实际上是预期的行为


可以通过更改表中的列族来更改属性

这是因为HBase不会立即删除或覆盖单元格。 当您删除一个单元格时,它会被一个墓碑标记,并在扫描表格时被扫描仪过滤掉

但是,当您重写旧版本时,它不会以任何方式被标记。在主要压缩期间,将删除\u表中配置的
MAX\u VERSION\u的所有旧单元格。在此之前,在表格扫描期间,每列的最大版本基于:
min(表格中配置的最大版本,扫描仪中配置的最大版本)


但是,如果在执行主要压缩之前删除一个新单元格,将弹出最新的覆盖版本。

这已经解决了

基本上,问题是我们在hbase delete中使用addColumn,而它本应是addColumns。addColumns会恢复到以前的版本(因此删除时该值会恢复到以前的值),而addColumns会删除所有现有版本