Hbase删除DeleteFamily单元格或恢复标记为删除的数据

Hbase删除DeleteFamily单元格或恢复标记为删除的数据,hbase,restore,Hbase,Restore,我在hbase中错误地删除了行,因此现在对于每一行,都有一个单元格具有type=DeleteFamily。我已经设置了KEEP\u DELETED\u CELLS=>“TRUE”,所以数据仍然存在,但我需要恢复它。据我所知,扫描数据,然后对除DeleteFamily one之外的所有单元格进行put将不会有帮助,因为数据已经在这里了。目前,我已使用以下代码将数据复制到另一个表中: Configuration config = HBaseConfiguration.create();

我在hbase中错误地删除了行,因此现在对于每一行,都有一个单元格具有
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

谢谢大家!