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
首先开始以为是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匹配时候才执行模块的处理函数
- nutch如何根据regex-urlfilter.txt文件过滤url链接的?
- nutch如何修改regex-urlfilter.txt爬取符合条件的链接
- ASP.NET MVC 4 (八) URL链接和Ajax帮助函数
- php 正则表达式提取网页超级链接url的函数
- 如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)
- PHP array_map用法,遍历数组每个元素执行某函数
- Sleep()函数的执行为什么不准确?
- jQuery.getJSON( url [, data ] [, success ] ) 中的回调函数参数不执行
- Flex中如何利用setInterval()和clearInterval()函数按照一定时间有规则的执行函数的例子
- 为什么object.onkeyup=function(){}函数无法执行?
- javascript自执行函数为什么要把windows作为参数传进去
- libcurl 中使用curl_multi_perform()函数执行订阅类型url的问题
- eclipse debug java程序,为什么不按照行顺序执行?
- Android中bindService的细节之三:多次调用bindService(),为什么onBind()只执行一次?
- PHP实现把文本中的URL转换为链接的auolink()函数分享
- javascript自执行函数为什么要把windows作为参数传进去
- addEventListener("transitionend", ()=>{...})方法回调函数执行多次问题
- 一个html按钮切换绑定不同函数后,点击时执行多次函数。
- new一个对象,构造函数会执行可以理解,为什么除了构造函数以外的函数也可以执行?