如何在hbase中处理行级删除?

vql8enpb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(434)

我是hbase的新蜜蜂。有人能澄清我对hbase中行级删除的疑问吗。假设一张表中有10条记录。因此,每个记录都将存储在单独的hfile中。因此,如果我们试图删除任何记录,它将删除实际的hfile。我明白了,这就是hbase中处理行级删除的方式。
但在压实过程中,较小的hfile将转换为较大的hfile。
因此,所有的数据都将存储在更大的文件中。现在,如果所有数据都存储在一起,行级删除将如何处理?

bvpmtnay

bvpmtnay1#

插入数据后不会立即创建hfile。首先数据存储在memstore中。一旦memstore足够大,它就会被刷新到hfile。不会为每个记录或行创建新的hfile。还要记住,由于记录存储在内存中,所以它们会被排序,然后刷新到hfile。这就是hfiles中记录的排序方式。
hfiles是不可变的[在hdfs中任何与此相关的文件都应该是不可变的]。不会立即删除记录。它们被标记为删除。当系统运行压缩(次要或主要)时,标记为删除的记录实际上被删除,新的hfile不包含它。如果没有启动压缩,则记录仍然存在。但是,无论何时查询它,它都不会显示。

fruv7luv

fruv7luv2#

基本上,它只是被标记为删除和实际删除发生在下一次压缩。有关详细信息,请参阅hbase文章中的删除。

相关问题