这是我的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。任何人都可以帮忙吗
答案 0 :(得分:3)
首先,Mapper
和Reducer
是接口,而不是类。您实现接口,而不是类。除此之外,请记住,Mapper
和Reducer
接口都实现泛型并期望两个键值对。 Forexample:
Mapper<Key1,Value1,Key2,Value2>
您可以从此处了解有关Mapper和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