hbase2.1.x java delete根据rowkey删除一个单元格数据

上接:hbase2.1.x java 创建工程

说明

根据 表名、rowkey、列族名、列名,删除该 单元格的数据

不会删除 历史数据

如果有历史数据,删除后,会显示上一个历史数据

添加测试数据

put 'book','1001','c1:title','htlm从入门到放弃'
put 'book','1001','c1:author','lucy'
put 'book','1001','c1:price','097.50'

注意: 价格 格式,这是字符串比较

步骤

  1. 获取table对象
  2. 根据rowkey构建 Delete 对象
  3. 执行 Delete 方法
  4. 关闭table

代码

/**
 * 删除单元格数据
 * @param tableName
 * @param rowKey
 * @param columnFamily
 * @param column
 * @throws IOException
 */
public void deleteCell(String tableName,String rowKey,String columnFamily,String column) throws IOException {
    TableName tn = TableName.valueOf(tableName);
    Table table = conn.getTable(tn);
    Delete delete=new Delete(Bytes.toBytes(rowKey));
    delete.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(column));
    table.delete(delete);
    table.close();
}

测试

删除 rowkey 是 1001 的 price:

hu.deleteCell("book","1001","c1","price");

查询

在 hbase shell 环境下执行下面命令:

scan 'book',{FORMATTER => 'toString'}

只能查询到下面结果:

1001                                           column=c1:author, timestamp=1647852018114, value=lucy
 1001                                           column=c1:title, timestamp=1647852018079, value=htlm从入门到放弃

price 被删除了

不会删除 历史数据

添加测试数据

put 'book','1001','c1:title','htlm从入门到放弃'
put 'book','1001','c1:author','lucy'
put 'book','1001','c1:price','097.50'

多次对价格进行修改:

put 'book','1010','c1:price','089.90'
put 'book','1010','c1:price','059.90'

注意: 价格 格式,这是字符串比较

测试

hu.deleteCell("book","1001","c1","price");

查询

在 hbase shell 环境下执行下面命令:

scan 'book',{FORMATTER => 'toString'}

结果:会显示 price 上一个版本的数据,即:089.90


原文出处:/show_1IX2zFXJJTqv.html