这个问题在这里已经有了答案:
hadoopMap器中对象类型的键(1个答案)
5年前关门了。
我是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
,等等。它们是逐行处理的。
但钥匙看起来怎么样?如何决定应该使用哪种数据类型的键?
1条答案
按热度按时间doinxwow1#
这里的一切都取决于你自己
InputFormat
使用的类。它解析输入数据源并提供(键、值)对。不同的输入格式实现可以为您提供不同的流,即使具有相同的输入源。下面是一篇演示方法的文章:
https://hadoopi.wordpress.com/2013/05/31/custom-recordreader-processing-string-pattern-delimited-records/
这里的主要驱动力是
RecordReader
.