为什么会出现子站点的CrawlDatum中的ifStart和finished字段与父站点相同?

来源:互联网 发布:微信钱包表结构 mysql 编辑:程序博客网 时间:2024/03/29 18:14

和CrawlDatum中的set()没有关系。

原因是:因为我在Injector第二个job的ReducerClass(即InjectReducer)最后添加了代码

res.setIfStart(true);

res.setFinished(false);

而InjectorReducer类将上一个job产生的<Text,CrawlDatum>键值对和链接数据库CrawlDb中的键值对进行合并,就是将两个数据源中的键值对全部读出来然后写入新的连接数据库CrawlDb中,然后将新的CrawlDb作为最后的连接数据库,删除旧的链接数据库。所以这样就相当于给数据链接库中所有的url链接的IfStart和finished属性重新赋值,所以出现了题目中的问题。