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

kcugc4gi  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(395)

我创造了 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 .
还有别的办法吗?

3pvhb19x

3pvhb19x1#

因为您使用的是get,所以结果应该包含一行。对于put,只需要一个行键,然后是列族、限定符和值的列表。

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是提取单元格详细信息的方法。我希望您知道每个单元格都有关于行键、族、限定符、时间戳和值的详细信息。您也可以从每个单元格中获取行键,但获取整行的行键是合乎逻辑的。我希望这有帮助。
只要您设置了envbtable,只要您对用户有权限,任何服务器都是相同的。
如果您使用的是shell,方法可能会有所不同。但最终你可能也需要一个脚本,因为你必须自定义,我想没有标准的方法来实现这一点

ebdffaop

ebdffaop2#

您是否考虑过将复制作为一种替代方案?可以在hbase中为特定列族启用复制。

相关问题