Hbase - 在diff env中将一行从一个表复制到另一个表 - Java

时间:2015-08-05 11:39:42

标签: java hbase

我为HBaseConfiguration创建了both the environments

Get g =  new Get(Bytes.toByte("rowKey"));
Result r = envATable.get(g);

Put p = new Put(Bytes.toByte("sameRowKey"));
p.add("Need a way to add that result");
envBTable.put(p);

我发现的解决方案:

迭代结果,将每个KeyValue添加到p

还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

由于您使用的是get,因此结果应该包含一行。对于看跌期权,您只需要一个行键,然后列出col系列,限定符,值。

String rowId = new String(result.getRow());
Put put = new Put(Bytes.toBytes(rowId));
for(Cell cell : result.rawCells()) {
    put.add(CellUtil.cloneFamily(cell), 
    CellUtil.cloneQualifier(cell), CellUtil.cloneQualifier(cell));
}
envBTable.put(put);

CellUtil是提取单元格细节的方法。我希望你知道每个单元格都有关于rowkey,family,qualifier,timestamp和value的详细信息。您也可以从每个单元格中获取行键,但是逻辑上可以获得整行的行键。我希望这有帮助。

只要您设置了envBTable,我认为任何服务器都是相同的,只要您拥有该用户的权限。

如果你使用shell,方法可能会有所不同。但最终你可能也需要一个脚本,因为你必须自定义,并且没有标准的方法来做到这一点我认为

答案 1 :(得分:0)

您是否将复制视为替代方案?您可以在HBase中为特定列系列启用复制。