hadoop-@Map器和还原器重写错误

dxpyg8gm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(287)

我一直在做一个mapreduce程序,遇到了一个障碍,需要一些帮助。我有一个运行3个作业的程序(作业2在for循环中运行了5次),似乎我的一些Map器和还原器没有正确定义。在编译时,我不断得到“method does not override or implementation a method from a supertype”错误。
以下是我的程序的基本结构: Job 1: 第一个Map器
无减速器 Job 2: 第二个Map器
第一减速器 Job 3: 最终Map器
最终减速器
下面是如何定义Map器和还原器:

public static class FirstMapper extends Mapper<Object, Text, LongWritable, Vertex>  {
        @Override
        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {}

public static class SecondMapper extends Mapper<LongWritable, Vertex, LongWritable, Vertex> {
        @Override
        public void map(long key, Vertex value, Context context) throws IOException, InterruptedException {}

public static class FirstReducer extends Reducer<LongWritable, Vertex, LongWritable, Vertex> {
        @Override
        public void reduce(Long key, Iterable<Vertex> values, Context context) throws IOException, InterruptedException {}

public static class FinalMapper extends Mapper<LongWritable, Vertex, LongWritable, LongWritable> {
        @Override
        public void map(Long key, Vertex value, Context context) throws IOException, InterruptedException {}

public static class FinalReducer extends Reducer<LongWritable, LongWritable, LongWritable, LongWritable> {
        @Override
        public void reduce(Long key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {}

firstmapper看起来没问题,因为它不会导致错误,但是其他4个会,我不知道为什么,因为方法签名看起来是正确的。我最初认为可能是因为我的自定义顶点类,但它实现了可写,所以我不知道为什么这会导致一个问题。任何帮助都将不胜感激。谢谢

ruarlubt

ruarlubt1#

你的钥匙需要实现 WritableComparable 接口并匹配在类中指定的类型 Mapper 以及 Reducer 签名。例如,在第二个例子中: Mapper<LongWritable, Vertex, LongWritable, Vertex> 但后来在 map 您使用的方法 long . 这需要与您在签名中指定的类型相匹配,即 LongWritable . 因此,第二个Map的参数需要如下所示: map(LongWritable key, Vertex value, Context context) 最后四节课都有这个问题。

相关问题