如何从hbase结果中读取字符串?

wtlkbnrh  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

我正在使用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);
        }

    }
}

有一个reducer可以将字符串输出到另一个hbase表,当我尝试用mapper中的一些硬代码字符串测试它时,它工作得很好。我已经从hbase shell检查了要读取的字符串是否设置正确。
但是,当我尝试将其作为行id输入到hbase中的另一个表中时,它会变成未知字符串,如下所示:
[b@fe2851
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
[b@fe331c
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
[b@fe6526
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
[b@fe7a98
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
预期结果如下:
苹果
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
橙色
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
香蕉
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
菠萝
列=result:count,时间戳=1415868730030,值=\x00\x00\x00\x01
关于可能的原因有什么线索吗?

aoyhnmkz

aoyhnmkz1#

您正在写入数组的字符串名称 [B@fe6526 或者类似的。
我想你想要这个:

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

相关问题