首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hbase -在diff env - Java中将一行从一个表复制到另一个表

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

Stack Overflow用户
提问于 2015-08-05 19:39:42
回答 2查看 1.2K关注 0票数 1

我为both the environments创建了HBaseConfiguration

代码语言:javascript
运行
复制
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中。

有没有其他方法可以做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2015-08-05 23:20:05

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

代码语言:javascript
运行
复制
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,方法可能会有所不同。但最终您可能也需要一个脚本,因为您必须进行自定义,而我想没有标准的方法可以做到这一点

票数 1
EN

Stack Overflow用户

发布于 2015-08-05 20:12:23

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31831474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档