我的问题对于HADOOP用户而言似乎很愚蠢。但是我对在地图减少问题中使用泛型感到困惑,例如“ WORD COUNT”。
我知道,泛型被基本用于类型转换和类型安全。但是我不能在这里将这个概念联系起来。
在字数问题上,
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)。但是我仍然不清楚,为什么在这里将泛型用于键值对。没有其他方法可以做同样的事情。 在这里使用泛型有什么好处?
谢谢!
MapReduce在Mapper和Reducer中专门使用泛型来指定期望读入和写出哪种输入和输出。
在这个例子中你指定你的WordCountMapper扩展Mapper与指定的泛型类Mapper<LongWritable, Text, Text, LongWritable>,其中前两类LongWritable,并Text表示 输入键和值 映射器类期待阅读,而最后两节课Text,并LongWritable表示 输出键和值 类的map方法有望散发出来。
WordCountMapper
Mapper
Mapper<LongWritable, Text, Text, LongWritable>
LongWritable
Text
map
通过该线程讨论,可以更深入地了解为什么在MapReduce中实现了泛型。另外,此JIRA问题提供了更多信息。