Hadoop自定义Mapper输出格式为Reducer

时间:2015-03-30 23:06:25

标签: java hadoop hdfs

HDFS新手:

如果我错了,请纠正我,但据我所知:

Mapper<Object, Text, Text, Text>

最后两个Text是Mapper的返回类型。说我想要返回Text, <Text, IntWriteable>。我怎么能实现这个目标?另外,我应该在文档中的哪个位置?

例如,在mapper收到Object和Text之后,它会对输入文件中的数据行做一些逻辑,我希望它返回类似

的内容

context.write(Text,[Text, IntWriteable])

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您可能需要定义自己的数据类型。如果需要比较操作,请实现WritableComparable接口,否则只需实现Writable接口即可。

以下是使用WritableComparable界面的示例:

public class MyDataType implements WritableComparable<MyDataType> {
    private Text name;
    private IntWritable age;

    @Override
    public void readFields(DataInput in) throws IOException {
        name.readFields(in);
        age.readFields(in);
    }

    @Override
    public void write(DataOutput out) throws IOException {
        name.write(out);
        age.write(out);
    }

    @Override
    public int compareTo(MyDataType o) {
        int nameCompare = name.compareTo(o.name);
        if(nameCompare != 0) {
            return nameCompare;
        } else {
            return age.compareTo(o.age);
        }
    }
}