Nutch 1.0 源代码分析[1] Injector

在Crawl中的main函数中有一句是:

// initializecrawlDb

injector.inject(crawlDb, rootUrlDir);

引用[李阳]:inject操作调用的是nutch的核心包之一crawl包中的类Injector。

inject操作主要作用:

1.       将URL集合进行格式化和过滤,消除其中的非法URL,并设定URL状态(UNFETCHED),按照一定方法进行初始化分值;

2.       将URL进行合并,消除重复的URL入口;

3.       将URL及其状态、分值存入crawldb数据库,与原数据库中重复的则删除旧的,更换新的。

inject操作结果:crawldb数据库内容得到更新,包括URL及其状态。

看一下inject调用的函数:

public
void
inject(Path crawlDb, Path urlDir) throwsIOException {

//产生一个文件名是随机的临时文件夹

Path tempDir = newPath(getConf().get("mapred.temp.dir",
".")

+ "/inject-temp-"

+ Integer.toString(new

Random().nextInt(Integer.MAX_VALUE)));

// map text input file to a<url,CrawlDatum> file

// 产生<url,CrawlDatum>key-value对的文件

JobConf sortJob = newNutchJob(getConf());

sortJob.setJobName("inject" + urlDir);

FileInputFormat.addInputPath(sortJob,urlDir);

sortJob.setMapperClass(InjectMapper.class);

FileOutputFormat.setOutputPath(sortJob,tempDir);

sortJob.setOutputFormat(SequenceFileOutputFormat.class);

sortJob.setOutputKeyClass(Text.class);

sortJob.setOutputValueClass(CrawlDatum.class);

sortJob.setLong("injector.current.time",

System.currentTimeMillis());

JobClient.runJob(sortJob);

这里用的是hadoop的东西,输入文件目录为:用户指定的url目录。输出目录为:产生的那个临时文件夹。这里的SequenceFileOutputFormat在<Hadoop,The definitive book>中的解释为:Imagine a logfile,where each log

http://c.tieba.baidu.com/p/3476808306

http://c.tieba.baidu.com/p/3476798710

http://c.tieba.baidu.com/p/3474281354

http://c.tieba.baidu.com/p/3474300101

http://c.tieba.baidu.com/p/3474294075

http://c.tieba.baidu.com/p/3474123295

http://c.tieba.baidu.com/p/3474314242

http://c.tieba.baidu.com/p/3474310411

http://c.tieba.baidu.com/p/3474304550

http://c.tieba.baidu.com/p/3475433945

http://c.tieba.baidu.com/p/3475430015

http://c.tieba.baidu.com/p/3475433348

http://c.tieba.baidu.com/p/3475431434

http://c.tieba.baidu.com/p/3474176863

http://c.tieba.baidu.com/p/3474159835

http://c.tieba.baidu.com/p/3474163941

http://c.tieba.baidu.com/p/3474156121

http://c.tieba.baidu.com/p/3474147660

http://c.tieba.baidu.com/p/3474151899

http://c.tieba.baidu.com/p/3474142287

http://c.tieba.baidu.com/p/3474136965

http://c.tieba.baidu.com/p/3474133165

http://c.tieba.baidu.com/p/3474128675

http://c.tieba.baidu.com/p/3474103896

http://c.tieba.baidu.com/p/3474099488

http://c.tieba.baidu.com/p/3474094120

http://c.tieba.baidu.com/p/3475431976

http://c.tieba.baidu.com/p/3474267991

http://c.tieba.baidu.com/p/3474259583

http://c.tieba.baidu.com/p/3474254990

http://c.tieba.baidu.com/p/3474228986

http://c.tieba.baidu.com/p/3474221626

http://c.tieba.baidu.com/p/3474215742

http://c.tieba.baidu.com/p/3474212122

http://c.tieba.baidu.com/p/3474188883

http://c.tieba.baidu.com/p/3474207722

http://c.tieba.baidu.com/p/3474184143

http://c.tieba.baidu.com/p/3474180522

http://c.tieba.baidu.com/p/3474171022

http://c.tieba.baidu.com/p/3474086627

时间: 2024-10-14 13:53:21

Nutch 1.0 源代码分析[1] Injector的相关文章

Nutch 1.0 源代码分析[8] CrawlDb

Nutch 1.0 源代码分析[8] CrawlDb 24MAR 2010 18:44:08 +0800 ---------------------------------------------------------------------------- 再接下来Crawl类中的重要的一行就是: http://c.tieba.baidu.com/p/3312872854 http://c.tieba.baidu.com/p/3312894881 http://c.tieba.baidu.co

Nutch 1.0 源代码分析[3] Plugin(2)

 Nutch 1.0 源代码分析[3] Plugin(2)  来自: http://c.tieba.baidu.com/p/3439551436 在URLNormalizers构造函数中,有一句没有看: this.extensionPoint =PluginRepository.get(conf).getExtensionPoint( URLNormalizer.X_POINT_ID); 看一下PluginRepository.get函数: public static synchronizedP

Nutch 1.0 源代码分析[2] Plugin(1)

借着URLNormalizers看一下Nutch的插件机制,在Injector类中的configure类中有一句是: urlNormalizers = newURLNormalizers(job, URLNormalizers.SCOPE_INJECT); 它调用的是: publicURLNormalizers(Configuration conf, String scope) { this.conf =conf; this.extensionPoint =PluginRepository .g

Nutch 1.0 百度贴吧源代码分析[3] Plugin(2)

在URLNormalizers构造函数中,有一句没有看: this.extensionPoint =PluginRepository.get(conf).getExtensionPoint( URLNormalizer.X_POINT_ID); 看一下PluginRepository.get函数: public static synchronizedPluginRepository get(Configuration conf) { PluginRepository result = CACHE

区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令二

区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令二.flogging,即:fabric logging,为Fabric基于第三方包go-logging封装的日志包,go-logging使用方法参考:github.com/op/go-logging如下代码为flogging包的初始化函数: func init() { ????logger = logging.MustGetLogger(pkgLogID) //创建仅在flogging包内代码使用的logging.Lo

兄弟连区块链教程Fabric1.0源代码分析ledgerID数据

1.idStore概述 Fabric支持创建多个Ledger,不同Ledger以ledgerID区分. 多个ledgerID及其创世区块存储在idStore数据库中,idStore数据库基于leveldb实现. idStore默认使用路径:/var/hyperledger/production/ledgersData/ledgerProvider/. idStore库中特殊key "underConstructionLedgerKey",用于标志最新在建的ledgerID,ledger

区块链教程Fabric1.0源代码分析Ledger historydb历史数据库

1.historydb概述 historydb,用于存储所有块读写集中写集的内容.代码分布在core/ledger/kvledger/history/historydb目录下,目录结构如下: historydb.go,定义核心接口HistoryDBProvider和HistoryDB. histmgr_helper.go,historydb工具函数. historyleveldb目录,historydb基于leveldb的实现.???? historyleveldb.go,HistoryDBPr

[caffe]linux下安装caffe(无cuda)以及MNIST EXAMPLE

昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS sudo apt-get install libatlas-base-dev 2.安装依赖项 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5

[转]UIApplicationDelegate分析小结

转载地址:http://www.apkbus.com/android-131646-1-1.html 我们开发出来的运行在iOS平台上的应用程序都有一个UIApplication类的对象.1.是iOS应用程序的起始点,并负责初始化和显示UIWindow:2.负责加载应用程序的第一个UIView到UIWindow中:3.帮助管理应用程序的生命周期:4.接收事件,再转给它的委托"UIApplicationDelegate"来处理:此委托可处理的事件包括:应用程序的生命周期事件如程序启动和关