hbase官方文档中描述了,hbase删除数据可以总结为下面三种(Java API有很多接口,可以总结下面的几种):
删除一个列的指定版本
删除一个列的所用版本
删除指定列族的所有列
hbase删除数据,并不是马上删掉,只是对数据打一个删除标记,真正删除数据是等到下一次major_compact(除非KEEP_DELETED_CELLS=true)。当删除整行时,hbase会给这条数据每个列族打一个删除标记。有两个需要注意的地方:
1. major_compact之前和之后,查询结果不一样,具体看例子:
public classDeleteExample {public static void main(String[] args) throwsIOException {
Configuration conf=HBaseConfiguration.create();
Connection connection=ConnectionFactory.createConnection(conf);
Admin admin=connection.getAdmin();if(admin.tableExists(TableName.valueOf("test2"))){
admin.disableTable(TableName.valueOf("test2"));
admin.deleteTable(TableName.valueOf("test2"));
}
HTableDescriptor desc= new HTableDescriptor(TableName.valueOf("test2"