Fetcher类的工作流程
生活随笔
收集整理的這篇文章主要介紹了
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 threadsnew 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())));
?
總結
以上是生活随笔為你收集整理的Fetcher类的工作流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费获取半年 Bitdefender T
- 下一篇: Linux中常用C/C++一些头文件的作