2011-11-09 63 views
0

以下HBase的代碼返回我rowKey前面一些奇怪的字符:HBase的KeyValue.getKey()返回多餘的字符

「\ u0000的」 「\ u0014」,「EI:蝦:-749 ...。 「

以前的怪異字符是'\ u0000'和'\ u0014',有時是'\ u0016'。我在上面的行中加上引號使其可讀。只有兩個,它們被預置在我的rowkey上。關鍵應該是'ei:蝦:-749 ...'。下面是我用它來拿到鑰匙回代碼:

import static org.apache.hadoop.hbase.util.Bytes.toBytes; 

List<KeyValue> kvs = result.list(); 
     String key = null; 
     for (KeyValue kv : kvs) { 
      String value = Bytes.toString(kv.getValue()); 
      String qualifier = Bytes.toString(kv.getQualifier()); 
      if(key == null) { 
       key = Bytes.toString(kv.getKey()); 

下面是我用來創建我把代碼:

public Put createPut(String columnFamily) { 
     StringBuilder sb = new StringBuilder(this.getGroup()).append(':'); 
     sb.append(this.getKey()).append(':').append(this.getCoordinateHash()); 

     Put p = new Put(toBytes(sb.toString())); 
     p = p.add(toBytes(columnFamily), toBytes(COLUMN_VALUE), toBytes(this.getValue())); 

任何想法,這些怪異的人物是誰?我究竟做錯了什麼? 謝謝, Rajat

回答

0

我想你想調用KeyValue.getRow()。

KeyValue.getKey()返回原始鍵,前兩個字節是一個Short,表示該行的長度。