HBase KeyValue.getKey()返回额外字符

HBase KeyValue.getKey()返回额外字符,hbase,Hbase,以下hBase代码在我的rowKey前面返回了一些奇怪的字符: “\u0000”“\u0014”“ei:shrimp:-749…” 带前缀的奇怪字符是“\u0000”和“\u0014”,有时是“\u0016”。为了便于阅读,我在上面的一行加了引号。只有两个,它们是为我的划船做准备的。关键应该是‘ei:shrimp:-749…’。以下是我用来取回钥匙的代码: import static org.apache.hadoop.hbase.util.Bytes.toBytes; List<Key

以下hBase代码在我的rowKey前面返回了一些奇怪的字符:

“\u0000”“\u0014”“ei:shrimp:-749…”

带前缀的奇怪字符是“\u0000”和“\u0014”,有时是“\u0016”。为了便于阅读,我在上面的一行加了引号。只有两个,它们是为我的划船做准备的。关键应该是‘ei:shrimp:-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());
知道那些奇怪的角色是什么吗?我做错了什么? 非常感谢。
Rajat

我想您应该调用KeyValue.getRow()

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