谁能解释一下为什么我们在下面的语句中把参数写在尖括号里,为什么我们在参数中定义输出键/值对?
public static class Map extends Mapper <LongWritable, Text, Text, IntWritable>
什么是上下文对象,为什么我们在下面的语句中使用。
public void map(LongWritable key, Text value, Context context ) throws IOException, InterruptedException
再加上@Vasu的回答…
Context存储对RecordReader
和RecordWriter
的引用。当使用context.getCurrentKey()
和context.getCurrentValue()
检索键值对时,请求被分配给RecordReader
。当context.write()
被调用时,它被赋值给RecordWriter
。
这里的RecordReader
和 RecordWrite
r实际上是抽象类
<>在Java中用于表示泛型。
Mapper <LongWritable, Text, Text, IntWritable>
只接受<LongWritable,Text>
作为键,<Text,IntWritable>
作为值。如果您尝试向映射器提供任何其他可写类型,这将抛出错误。
Context
上下文对象用于写入输出Key-Values
以及在Mapper
中获取configuration, counters, cacheFiles
等。