【发布时间】:2011-08-01 16:52:05
【问题描述】:
我知道在 HBase 中,行的键是不能改变的。
但我真的需要一个行键重命名功能。 如何使用 JAVA 将一行复制到 HBase 中的另一行?
例如我有键“key1”的现有行,我想创建一个键“key2”从“key1”行复制的行。
谢谢一百万!
【问题讨论】:
标签: hbase
我知道在 HBase 中,行的键是不能改变的。
但我真的需要一个行键重命名功能。 如何使用 JAVA 将一行复制到 HBase 中的另一行?
例如我有键“key1”的现有行,我想创建一个键“key2”从“key1”行复制的行。
谢谢一百万!
【问题讨论】:
标签: hbase
不确定你是否已经弄清楚了。但这是非常简单的事情。只需使用新的行键创建一个新的 Put 并从旧键复制内容。
// lets say your already got the result from table.get(Bytes.toBytes("key1"))
Put put = new Put(Bytes.toBytes("key2"));
NavigableMap<byte[], NavigableMap<byte[], byte[]>> familyQualifierMap = result.getNoVersionMap();
for (byte[] familyBytes : familyQualifierMap.keySet()) {
NavigableMap<byte[], byte[]> qualifierMap = familyQualifierMap.get(familyBytes);
for (byte[] qualifier : qualifierMap.keySet()) {
put.add(familyBytes, qualifier, qualifierMap.get(qualifier));
}
}
table.put(put);
table.flushCommits();
table.close();
【讨论】: