zoukankan      html  css  js  c++  java
  • Fetcher类的工作流程

    Fetcher类工作流程:
    
    FileInputFormat.addInputPath(job, new Path(segment, CrawlDatum.GENERATE_DIR_NAME));
    job.setInputFormat(InputFormat.class);
    
    ----------------第一部分------------------------
    job.setMapRunnerClass(Fetcher.class);
    
    Fetcher类实现了MapRunnable<Text, CrawlDatum, Text, NutchWritable>这个接口,主要完成了生产者的启动与消费者的启动。
    Fetcher extends Configured implements Tool,MapRunnable<Text, CrawlDatum, Text, NutchWritable>
    public void run(RecordReader<Text, CrawlDatum> input,OutputCollector<Text, NutchWritable> output,Reporter reporter){
    	启动生产者
    	feeder = new QueueFeeder(input, fetchQueues, threadCount * queueDepthMuliplier);
    	启动消费者
    	for (int i = 0; i < threadCount; i++) {       // spawn threads
          		new FetcherThread(getConf()).start(); 
        	}
    }
    FetcherThread类完成网页的下载,并用如下的方法多路输出。
    
    
    ----------------第二部分:多路输出------------------------
    FileOutputFormat.setOutputPath(job, segment);
    job.setOutputFormat(FetcherOutputFormat.class);/** Splits FetcherOutput entries into multiple map files. */
    output.collect(key, new NutchWritable(datum));
    output.collect(key, new NutchWritable(content));
    output.collect(url, new NutchWritable(new ParseImpl(new ParseText(parse.getText()),parseData, parse.isCanonical())));
    
  • 相关阅读:
    ios动态创建类Class
    iOS 视图控制器转场详解
    HTML5新增标签属性
    HTML5入门篇
    ExtJs 添加员工 实例 ---- 锚点布局 anchor 可自动伸缩
    Ext 初级UI设计
    Ext 面向对象程序设计 入门篇
    改善EF代码的方法(下)
    改善EF代码的方法(上)
    EF 存储过程(下)
  • 原文地址:https://www.cnblogs.com/i80386/p/3334607.html
Copyright © 2011-2022 走看看