您的位置:首页 > 其它

Nutch中的Injector为什么按照url链接的个数执行多次Map()函数?

2012-07-17 18:48 281 查看
今天详细分析了一下nutch源代码,发现程序调用多次map原因:

首先开始以为是LocalJobRunner的原因,因为LocalJobRunner将输入切分成了若干份rawSplits看,然后对每个分块调用MapTask线程执行处理(备注:MapTask不是Map类,他是负责管理Map类的程序,他调用MapRunner函数调用Map函数)。

但后来发现不是LocalJobRunner类的原因,继续看代码发现在MapRunner类中调用Map类的map函数的地方源代码是这样的:

     while (input.next(key, value)) {

        // map pair to output

        System.err.println("Input.next="+value.toString());

        mapper.map(key, value, output, reporter);

        if(incrProcCount) {

          reporter.incrCounter(SkipBadRecords.COUNTER_GROUP,

              SkipBadRecords.COUNTER_MAP_PROCESSED_RECORDS, 1);

        }

      }

对于一个map的输入,按照键值对循环调用map函数,就是说有几个url就会调用几次map
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  url
相关文章推荐