不考虑Mapper和Reducer接口

时间:2015-04-27 02:50:45

标签: java exception hadoop mapreduce ubuntu-14.04

这是我的mapper函数标题行

public static class PageMapper extends Mapper<Text, Text, Text, Text>

这是我的Reducer函数头

public static class PageReducer extends Reducer`<Text, Text, Text, Text>

编译代码时

  

PageRank.java:30:错误:此处没有预期接口

    extends Mapper <Object, Text, Text, Text>
  

PageRank.java:61:错误:此处没有预期接口

public static class PageReducer extends Reducer<Text, Text, Text, Text>

为什么不在这里接受Mapper和Reducer。任何人都可以帮忙吗

2 个答案:

答案 0 :(得分:3)

首先,MapperReducer是接口,而不是类。您实现接口,而不是类。除此之外,请记住,MapperReducer接口都实现泛型并期望两个键值对。 Forexample:

Mapper<Key1,Value1,Key2,Value2>

您可以从此处了解有关Mapper和Reducer的更多信息:

org.apache.hadoop.mapred.Mapper

org.apache.hadoop.mapred.Reducer

答案 1 :(得分:0)

令人困惑的是,API包含以下两种: 1) class org.apache.hadoop.mapreduce.Reducer 和 2) 界面 org.apache.hadoop.mapred.Reducer

AND

1)该类未实现接口 2)类中的reduce方法与接口具有不同的签名 3)MapReduce教程使用的是Reducer类,而不是接口。

我的猜测是不建议使用两者之一,并且应该在最佳实践中提到:1)实现接口org.apache.hadoop.mapred.Reducer,或2)扩展org类.apache.hadoop.mapreduce.Reducer