2011-08-01 6 views
2

HBaseでわかっていますが、行のキーは変更できません。HBaseコピーJavaの1行(名前を変更する行キー)

しかし、私は本当に、行キーリネーム機能を必要としています。 JAVAを使用してHBaseのある行を別の行にコピーするにはどうすればよいですか?

キー "key1"を持つ既存の行があり、 "key1"行からコピーされたキー "key2"を持つ行を作成したいとします。

ありがとうございます!

答えて

1

あなたがすでに理解しているかどうかはわかりません。しかし、これはかなり簡単なものです。新しい行キーで新しい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(); 
関連する問題