Как читать строку из результата HBase?

Я использую HBase MapReduce (docs) для чтения строк из таблицы HBase. Вот часть кода:

public void map(ImmutableBytesWritable row, Result values, Context context) throws IOException {

 String testing = values.getValue(Bytes.toBytes("data"),Bytes.toBytes("lastLine")).toString();

 try {
 context.write(new ImmutableBytesWritable(Bytes.toBytes(testing)), new IntWritable(1));
 } catch (InterruptedException e) {
 throw new IOException(e);
 }

 }
}

Существует редуктор для вывода строки в другую таблицу HBase, которая отлично работает, когда я пытаюсь проверить ее с помощью некоторых жестких кодовых строк из mapper. Я проверил из оболочки HBase, что строка, подлежащая чтению, установлена правильно.

Однако, когда я пытаюсь ввести это в другую таблицу в HBase как идентификатор строки, она становится неизвестной строкой, например:

[B @fe2851 column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 [B @fe331c column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 [B @fe6526 column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 [B @fe7a98 column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01

Ниже приводится ожидаемый результат:

яблоко column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 оранжевый column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 банан column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01 ананас column = result: count, timestamp = 1415868730030, value =\x00\x00\x00\x01

Есть ли какая-нибудь подсказка о возможной причине?

1 ответ

Вы пишете строковое имя массива, который является [B@fe6526 или аналогичным.

Я думаю, вы хотели этого:

byte[] testing = values.getValue(Bytes.toBytes("data"), Bytes.toBytes("lastLine"));
context.write(new ImmutableBytesWritable(testing), new IntWritable(1));

licensed under cc by-sa 3.0 with attribution.