generate.max.count
generate.max.count
长河青川 发表于3年前
generate.max.count
  • 发表于 3年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

对generate.max.count参数的处理在org.apache.nutch.crawl.Generator内部类Selector中

org.apache.nutch.crawl.Generator中相关变量声明情况

private HashMap<String, int[]> hostCounts = new HashMap<String, int[]>();
private int maxCount;


内部类Selector的config方法中

maxCount = job.getInt(GENERATOR_MAX_COUNT, -1);


reduce方法中的处理

/***
1、获取 某一主机下的int[] ,如果为null,声明一个数组,放入map中,int数组第2个值+1;

*/

//1
int[] hostCount = hostCounts.get(hostordomain);
if (hostCount == null) {
	hostCount = new int[] { 1, 0 };
	hostCounts.put(hostordomain, hostCount);
}
hostCount[1]++;// increment hostCount

//2、检查是否到了topN的数量,如果hostCount的第一个值大于limit
// check if topN reached, select next segment if it is
while (segCounts[hostCount[0] - 1] >= limit//segCounts :
		&& hostCount[0] < maxNumSegments) {
	hostCount[0]++;
	hostCount[1] = 0;
}

// reached the limit of allowed URLs per host / domain
// see if we can put it in the next segment?
if (hostCount[1] >= maxCount) {
	if (hostCount[0] < maxNumSegments) {
		hostCount[0]++;
		hostCount[1] = 0;
	} else {
		if (hostCount[1] == maxCount + 1
				&& LOG.isInfoEnabled()) {
			LOG.info("Host or domain "
					+ hostordomain
					+ " has more than "
					+ maxCount
					+ " URLs for all "
					+ maxNumSegments
					+ " segments. Additional URLs won't be included in the fetchlist.");
		}
		// skip this entry
		continue;
	}
}
entry.segnum = new IntWritable(hostCount[0]);
segCounts[hostCount[0] - 1]++;




共有 人打赏支持
粉丝 2
博文 1
码字总数 4192
×
长河青川
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: