通过看跌或删除。 Hbase和Hadoop

时间:2012-03-23 10:52:05

标签: java hbase

我是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);
    }
}

1 个答案:

答案 0 :(得分:0)

您的映射器似乎输出了一对键值对 ImmutableBytesWritable -> Result但您的Reducer会读入类型为ImmutableBytesWritable -> Put的键值对。这不起作用,因为映射器的输出必须与reducer的输入类型相同。你应该

  • 更改您的映射器以输出Put对象并调整您的方法和类签名
  • 或更改reducer签名以允许Result对象作为in-value。