美文网首页我爱编程
hbase delete 踩坑

hbase delete 踩坑

作者: pcqlegend | 来源:发表于2018-01-05 17:58 被阅读0次

    今日问题:发现delete操作不起作用

    看如下的解释

    1. 删除指定的所有版本以及删除指定列
    2. 删除指定列的最新版本,意思就是:如果删除了最新的版本,老的版本就会被使用。。。。
    /**
     * 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这个才能实现删除掉所有版本。

    相关文章

      网友评论

        本文标题:hbase delete 踩坑

        本文链接:https://www.haomeiwen.com/subject/mzesnxtx.html