说明
根据 表名、rowkey、列族名、列名,删除该 单元格的数据
不会删除 历史数据
如果有历史数据,删除后,会显示上一个历史数据
添加测试数据
put 'book','1001','c1:title','htlm从入门到放弃'
put 'book','1001','c1:author','lucy'
put 'book','1001','c1:price','097.50'
注意: 价格 格式,这是字符串比较
步骤
- 获取table对象
- 根据rowkey构建
Delete对象 - 执行
Delete方法 - 关闭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