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

时间:2011-11-09 18:01:02

标签: hbase

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

  

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

以下是我用来创建put的代码:

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

知道那些奇怪的角色是什么吗?我究竟做错了什么? 谢谢, 拉雅

1 个答案:

答案 0 :(得分:0)

我想你想要调用KeyValue.getRow()。

KeyValue.getKey()返回原始键,前两个字节是一个Short,表示该行的持续时间。