我在hbase中错误地删除了行,所以现在对于每一行都有一个 type=DeleteFamily
. 我已经准备好了 KEEP_DELETED_CELLS => 'TRUE'
所以数据还在,但我需要恢复它。据我所知,扫描数据,然后对除deleteFamilyOne以外的所有单元格进行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。
谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!