我的问题似乎对HADOOP用户来说很愚蠢。但是我对Generics在地图减少问题中的使用感到困惑,例如" WORD COUNT"。
我知道Generics用于类型铸造和类型安全的bascialy。但我不能把这个概念联系起来。
在字数问题中,
public class WordCountMapper extends
Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
...
}
}
}
请有人清楚我在这里使用泛型。如果我在提出这个问题时遇到任何错误,请纠正我。
我现在理解这里使用的泛型是键值对(KEY IN,VALUE IN,KEY OUT,VALUE OUT)。但我仍然不清楚,为什么泛型在这里用于键值对。不是 还有其他方法可以做到这一点。 在此处使用Generics有什么好处?
谢谢!
答案 0 :(得分:1)
MapReduce特别在Mapper和Reducer中使用Generics来指定预期读入和写出的输入和输出类型。
在示例中,您已使用指定的泛型WordCountMapper
指定了Mapper
扩展Mapper<LongWritable, Text, Text, LongWritable>
类,其中前两个类LongWritable
和Text
代表输入键和值 Mapper类期望读取,而最后两个类Text
和LongWritable
表示输出键和值类{{ 1}}方法预计会发出。
此thread讨论让您更深入地了解为什么在MapReduce中实现了泛型。此外,此JIRA Issue提供了更多信息。