假设我刚刚在表中添加了一行,该行仍在memstore中。此时,我删除了它。删除发生了什么?我不确定我的理解是否正确:在memstore中为该行添加了一个标记。刷新memstore时,行和标记将写入HFile。但如果是这种情况,为什么不从memstore中删除行?
答案 0 :(得分:1)
HBase的工作方式是每次更改都是一个新的“插入”。这让我们的hbase以高效的方式运作。您还应该记住,在许多情况下,HBase设置为保存每个值的x版本。因此,行只是在memstore中的时间,它应该只保留行的一个版本是一个非常具体的边缘情况。系统最好以单一,预测和测试的方式工作,而不是处理边缘情况。
答案 1 :(得分:0)
磁盘上的Store文件中可能存在具有相同rowkey的行,在这种情况下,具有相同rowkey的另一个add将是对现有行的更新,从而导致该行的新版本。 使用memstore中的删除标记保存新添加的行将允许主要压缩将该行的所有旧版本删除到具有删除标记的版本。