我知道在HBase中,该行的键无法更改。
但我真的需要一个行键重命名功能。 如何使用JAVA将一行复制到HBase中的另一行?
e.g。我有一个带键“key1”的行,我想创建一个从“key1”行复制的键“key2”的行。
万分感谢!
答案 0 :(得分:2)
不确定你是否已经弄清楚了。但这是非常简单的事情。只需使用新的行键创建一个新的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();