HBase delete 删除不掉 排查,hbasedelete
hbase delete 踩坑
今日问题:
看如下的解释
- 删除指定的所有版本以及删除指定列
- 删除指定列的最新版本,意思就是:如果删除了最新的版本,查询的时候就会返回第二新的版本了
/**
* Delete all versions of the specified column.
* @param family family name
* @param qualifier column qualifier
* @return this for invocation chaining
*/
public Delete addColumns(final byte [] family, final byte [] qualifier) {
addColumns(family, qualifier, this.ts);
return this;
}
/**
* Delete the latest version of the specified column.
* This is an expensive call in that on the server-side, it first does a
* get to find the latest versions timestamp. Then it adds a delete using
* the fetched cells timestamp.
* @param family family name
* @param qualifier column qualifier
* @return this for invocation chaining
*/
public Delete addColumn(final byte [] family, final byte [] qualifier) {
this.deleteColumn(family, qualifier, this.ts);
return this;
}
但是举个例子:
image.png
一个表有两个列,这时候如果调用
delete.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("a"))
delete.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("b"))
table.delete
执行删除后
image.png
你会发现还是没有删除掉 a这个列,但是仔细一看你发现 这个a的 timestamp和上面那个的已经不一样了。!!!
一个是1515146085231 ,
一个是1515146081020
也就是最新的这个被删除了,老的还在!!!。
所以必须通过addColumns这个才能实现删除掉所有版本。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。