我知道在HBase中,行的键不能更改。
但我确实需要一个行键重命名功能。如何使用 JAVA 将 HBase 中的一行复制到另一行?
例如,我有一个带有键“key1”的现有行,并且我想创建一个带有从“key1”行复制的键“key2”的行。
太感谢了!
不确定你是否已经弄清楚了。但这是非常简单的事情。只需使用新行键创建一个新 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();
Run Code Online (Sandbox Code Playgroud)