2013-04-10 69 views
0

假設我只是向表中添加了一行,並且該行仍在memstore中。此時,我刪除了它。刪除發生了什麼?我不知道我的理解是否正確:在memstore中爲該行添加標記。當memstore被刷新時,行和標記被寫入HFile。但是,如果是這樣的話,爲什麼不從memstore中刪除該行?當HBase仍在memstore中時,它如何刪除一行?

回答

0

在磁盤上的Store文件中可能存在具有相同rowkey的行,在這種情況下,具有相同rowkey的另一個add將會是對現有行的更新,從而導致該行的新版本。 使用刪除標記從memstore保存新添加的行將允許主要壓縮刪除該行的所有舊版本直到刪除標記的版本。

1

HBase的工作方式是每一個變化都是一個新的「插入」。這讓我們高效地工作。你還應該記住,在很多情況下,HBase被設置爲保存每個值的x版本。所以,一行只在memstore中,它應該只保留行的一個版本是一個非常具體的邊緣情況。系統以單一的,預測和測試的方式工作比處理這種邊緣情況更好。

相關問題