HBase在Java中复制一行(重命名行键)

时间:2011-08-01 16:52:06

标签: hbase

我知道在HBase中,该行的键无法更改。

但我真的需要一个行键重命名功能。 如何使用JAVA将一行复制到HBase中的另一行?

e.g。我有一个带键“key1”的行,我想创建一个从“key1”行复制的键“key2”的行。

万分感谢!

1 个答案:

答案 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();