【发布时间】:2015-03-31 08:12:28
【问题描述】:
我是 Hadoop 的新手,对 Mapper 参数感到困惑。
以众所周知的WordCount为例:
class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
private Text outputKey;
private IntWritable outputVal;
@Override
public void setup(Context context) {
outputKey = new Text();
outputVal = new IntWritable(1);
}
@Override
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer stk = new StringTokenizer(value.toString());
while(stk.hasMoreTokens()) {
outputKey.set(stk.nextToken());
context.write(outputKey, outputVal);
}
}
}
见map函数,参数是Object key,Text value和Context context,我对Object key的样子感到困惑(你看,key从未在Map中使用函数)。
由于输入文件格式如下:
Deer
Beer
Bear
Beer
Deer
Deer
Bear
...
我知道 值 看起来像每一行 Deer、Beer 等等。它们是逐行处理的。
但是 key 长什么样子呢?如何决定key应该使用哪种数据类型?
【问题讨论】:
标签: java hadoop mapreduce cluster-computing distributed-computing