不考虑映射器和化简器接口



这是我的映射器函数标题行

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

这是我的化简器函数头

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>

为什么这里不接受映射器和化简器。谁能帮忙

首先

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

Mapper<Key1,Value1,Key2,Value2>

您可以从这里阅读有关映射器和化简器的更多信息:

org.apache.hadoop.mapred.Mapper

org.apache.hadoop.mapred.Reducer

令人困惑的是,API 同时包含:1) org.apache.hadoop.mapreduce.Reducer和2)界面org.apache.hadoop.mapred.Reducer

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

我的猜测是,应该弃用两者之一,并且应该在某处提及最佳实践:1)实现接口org.apache.hadoop.mapred.Reducer,或2)扩展类org.apache.hadoop.mapreduce.Reducer

最新更新