前言
在前幾篇文章中,分別整理了關於HBase新API的操作Get,Put等,今天整理刪除表數據,delete操作。
整理的內容相對粗糙,如有錯誤,還望指點。
獲取連接
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
獲取操作表
TableName tableName = TableName.valueOf(Bytes.toBytes("testtable"));
Table table = conn.getTable(tableName);
刪除數據
普通刪除
Delete delete=new Delete(Bytes.toBytes("row-1"));
delete.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));//根據行鍵 列族 列來刪除數據
delete.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"), 120000);//根據行鍵 列族 列 時間戳來刪除數據
delete.addFamily(Bytes.toBytes("colfam1"));//刪除整個列族中的數據
delete.addFamily(Bytes.toBytes("colfam1"),3);//刪除整個列族中對應時間戳的數據
table.delete(delete);
原子刪除
Delete delete=new Delete(Bytes.toBytes("row-1"));
delete.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
//原子刪除的原理和上面提到的原子修改的一樣,在檢查成功之後才能進行刪除操作
boolean res=table.checkAndDelete(Bytes.toBytes("row-1"),Bytes.toBytes("colfam1"), Bytes.toBytes("name"),Bytes.toBytes("Vogt"), delete);
批量刪除
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
TableName tableName = TableName.valueOf(Bytes.toBytes("testtable"));
Table table = conn.getTable(tableName);
List<Delete> deletes=new ArrayList<>();
Delete delete=new Delete(Bytes.toBytes("row-1"));
delete.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
deletes.add(delete);
Delete delete1=new Delete(Bytes.toBytes("row-1"));
delete1.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("lib"));
deletes.add(delete1);
table.delete(deletes);
table.close();
conn.close();