HBase的TTL(Time To Live)是一种用于指定数据存活时间的机制。它允许用户为HBase中的数据设置一个固定的生存时间,在达到指定的时间后,HBase会自动删除这些数据。
具体操作如下:
三步走,先禁用,再删除,后创建
disable ‘dbdata:tablename’
drop ‘dbdata:tablename’
create ‘dbdata:tablename’,{NAME=>‘pi’,COMPRESSION=>‘SNAPPY’,NAME => ‘DATE’,TTL=>‘60’};
1、shell脚本中查出需要删除的rowkey,脚本拼接出删除命令(deleteall ‘tablename’, rowkey)
2、通过hive的映射表查出需要删除的rowkey,拼成删除命令(deleteall ‘tablename’, rowkey)
3、以上两种都将删除命令输出至一个文件,如data_del.txt,然后执行 hbase shell data_del.txt
public static void deleteMultiRow(String tableName, String... rows) throws IOException{
HTable hTable = new HTable(conf, tableName);
List<Delete> deleteList = new ArrayList<Delete>();
for(String row : rows){
Delete delete = new Delete(Bytes.toBytes(row));
deleteList.add(delete);
}
hTable.delete(deleteList);
hTable.close();
}