2
HBaseでわかっていますが、行のキーは変更できません。HBaseコピーJavaの1行(名前を変更する行キー)
しかし、私は本当に、行キーリネーム機能を必要としています。 JAVAを使用してHBaseのある行を別の行にコピーするにはどうすればよいですか?
キー "key1"を持つ既存の行があり、 "key1"行からコピーされたキー "key2"を持つ行を作成したいとします。
ありがとうございます!
HBaseでわかっていますが、行のキーは変更できません。HBaseコピーJavaの1行(名前を変更する行キー)
しかし、私は本当に、行キーリネーム機能を必要としています。 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();