我是hadoop和hbase的新手。但是,我已经测试了我的Hbase和Hadoop正在运行。我遇到错误消息msg通过put或删除。我的Map阶段从hbase表“dsite”读取几条文本行,并将它们传递给Reducer,它应该将它们写入不同的表。无论我做什么,我总是得到同样的“通过一个放或删除”..
我一直在观看的例子没有帮助..我不使用iterable或Iterator等。
任何提示都没问题。
我的代码是:
static class Mapper12 extends TableMapper<ImmutableBytesWritable, Result>
{
public void mapper(ImmutableBytesWritable row,Result valuess,Context context) throws IOException
{
try {
context.write(row,valuess);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static class Reducer12 extends TableReducer<ImmutableBytesWritable, Put, ImmutableBytesWritable>
{
public void reducer(ImmutableBytesWritable key,Put values, Context context)
throws IOException, InterruptedException
{
Put put = new Put();
put.add(Bytes.toBytes("url"), Bytes.toBytes("www"),Bytes.toBytes(values.toString()));
context.write(key,put);
}
}
答案 0 :(得分:0)
您的映射器似乎输出了一对键值对
ImmutableBytesWritable -> Result
但您的Reducer会读入类型为ImmutableBytesWritable -> Put
的键值对。这不起作用,因为映射器的输出必须与reducer的输入类型相同。你应该
Put
对象并调整您的方法和类签名