Hbase删除DeleteFamily单元格或恢复标记为删除的数据
我在hbase中错误地删除了行,因此现在对于每一行,都有一个单元格具有Hbase删除DeleteFamily单元格或恢复标记为删除的数据,hbase,restore,Hbase,Restore,我在hbase中错误地删除了行,因此现在对于每一行,都有一个单元格具有type=DeleteFamily。我已经设置了KEEP\u DELETED\u CELLS=>“TRUE”,所以数据仍然存在,但我需要恢复它。据我所知,扫描数据,然后对除DeleteFamily one之外的所有单元格进行put将不会有帮助,因为数据已经在这里了。目前,我已使用以下代码将数据复制到另一个表中: Configuration config = HBaseConfiguration.create();
type=DeleteFamily
。我已经设置了KEEP\u DELETED\u CELLS=>“TRUE”
,所以数据仍然存在,但我需要恢复它。据我所知,扫描数据,然后对除DeleteFamily one之外的所有单元格进行put将不会有帮助,因为数据已经在这里了。目前,我已使用以下代码将数据复制到另一个表中:
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table myTable = connection.getTable(TableName.valueOf("my_table"));
Table myTableBu = connection.getTable(TableName.valueOf("my_table_bu"));
Scan scan = new Scan();
scan.setRaw(true);
scan.setTimeRange(1490004800000L, 1491004910000L);
ResultScanner scanner = myTable.getScanner(scan);
Result result;
do {
result = scanner.next();
if (result != null) {
Put put = new Put(result.getRow());
Arrays.stream(result.rawCells()).forEach(it -> {
try {
if (!CellUtil.isDelete(it)) {
put.add(it);
}
} catch (IOException e) {
log.error("Error adding Cell to Put: " + it);
}
});
myTableBu.put(put);
}
} while (result != null);
myTable.close();
myTableBu.close();
现在我想知道是否可以设置KEEP_DELETED_CELLS=>“FALSE”
等待主要压缩,然后将所有数据复制回或DeleteFamily单元格在主要压缩后不会被删除,并且将数据复制回将使我返回到现在的位置。我在谷歌上搜索了一下,发现DeleteFamily细胞在主要压实后可能不会被清除
我很高兴在此介绍恢复此类数据的其他可能的解决方案,例如是否有方法删除DeleteFamily单元格?我在谷歌找到的唯一解决办法就是把数据复制回来
Hbase版本为1.2.0-cdh5.9.0
谢谢大家!