HBase 截断表

Posted

技术标签:

【中文标题】HBase 截断表【英文标题】:HBase truncate table 【发布时间】:2012-05-08 14:47:37 【问题描述】:

如果我要从 HBase 中截断表,那么 1)它是否也从底层 HDFS 系统中删除数据,或者它只是用删除标记标记数据? 2) 如何确保/验证数据也从底层 HDFS 系统中删除?

【问题讨论】:

“从底层 HDFS 中删除”是指从磁盘中删除吗?还是只是从 NameNode 中的 HDFS 文件表中删除? 对不起,我是迂腐的,我只是想确保我的回答正确——从磁盘中删除是指从本机文件系统中删除还是用零覆盖? IE。您正在尝试缓解什么安全威胁 - 对驱动器具有读取权限的人正在读取数据,或者有人带着驱动器离开并稍后在空闲时读取数据? 我的意思是数据应该从磁盘中删除,所以它也应该从本机文件系统中删除。在这里我要确保没有人可以再次读取/复制数据。 【参考方案1】:

目前无法确保从底层文件系统中完全擦除 HBase 表数据。 HBase 表的文件可能会从 HDFS 中删除,但这仍然只是意味着它们被移动到了垃圾文件夹。

【讨论】:

【参考方案2】:

当从表中删除数据时,Hbase 墓碑数据,因此扫描/获取行不会返回它们并且无法读取它们。 当对表运行主要压缩时,所有墓碑数据都会从 Hbase 和 HDFS(本机文件系统)中删除并释放磁盘。

【讨论】:

表被截断时墓碑不适用。截断是表的删除/重新创建,意味着为表创建新的 HDFS 文件。 哦对了,我忽略了截断部分,我的答案是删除行,谢谢指正。

以上是关于HBase 截断表的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 清空表和截断表

删除表和截断表之间的区别?

“oracle ”截断表是啥意思?

Cassandra“截断”不清空表

需要使用 plpgsql 函数截断表

使用java代码截断表[重复]