这是Hadoop在线教程(https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html)的示例代码
public class WordCount {
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
// Something here
}
}
在方括号中,有<LongWritable, Text, Text, IntWritable>
,Text
的两次出现让我感到困惑。
我们如何判断它在实际代码中引用了哪个Text
,因为它们中有两个具有相同的名称?例如当我们使用private Text word = new Text();
同一篇文章中的类似代码是public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable>
。
答案 0 :(得分:1)
为了知道您需要查看哪种类型,请查看Mapper
本身的文档/实现,您可以找到here。泛型在内部称为K1
,V1
,K2
和V2
,并且在不同场合在整个班级中使用。因此,每当某事件以K1
作为参数(或者就此问题返回K1
)时,它指的是您“插入”的第一种类型。基本上(把继承和高级主题放在一边)只是一种简单的替代形式。
顺便说一句:每个(好的)IDE都应该帮助你解决这些问题,并推断出你正在处理的正确类型。