Hadoop Mapper参数说明

时间:2015-03-31 08:12:28

标签: java hadoop mapreduce cluster-computing distributed-computing

我是 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 keyText valueContext context,我对Object key的样子感到困惑(你看, key函数中从不使用Map

由于输入文件格式如下:

Deer
Beer
Bear
Beer
Deer
Deer
Bear
...

我知道 看起来像每一行DeerBeer,依此类推。它们是逐行处理的。

是怎样的?如何确定 密钥 应使用哪种数据类型?

1 个答案:

答案 0 :(得分:1)

此处的所有内容取决于您使用的InputFormat课程。它解析输入数据源并为您提供(Key,Value)对。不同的输入格式实现可以为您提供不同的流,即使具有相同的输入源。

以下是展示方法的文章:

https://hadoopi.wordpress.com/2013/05/31/custom-recordreader-processing-string-pattern-delimited-records/

这里的主要驱动因素是RecordReader