HBase KeyValue.getKey () возвращает дополнительные символы - PullRequest
0 голосов
/ 09 ноября 2011

следующий код hBase возвращает некоторые странные символы в начале моего rowKey:

"\ u0000", "\ u0014", "е: креветки:. -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());

Вот код, который я использовал для создания своего пута:

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 голосов
/ 10 ноября 2011

Полагаю, вы хотите вызвать KeyValue.getRow ().

KeyValue.getKey () возвращает необработанный ключ, а первые два байта представляют собой Short, указывающий длину строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...