Nutch学习记录:Index

#Nutch学习记录:Index

索引这部分的操作相对比较简单,应用Lucene提供的接口实现索引的功能。在进行了网页数据库和链接数据库的更新之后,crawl程序跳出循环,进行爬行阶段的最后一项工作——索引。索引这一过程在crawl的入口是:

1
indexer.index(indexes, crawlDb, linkDb, Arrays.asList(HadoopFSUtil.getPaths(fstats)));

Read More

Nutch学习记录:Fetch

#Nutch学习记录:Fetch

一、Fetch过程

Generate阶段产生了待爬行队列,并保存在segment/crawl_generate目录下。在Generate结束后,进入Fethch阶段,该阶段同Generate一样处于循环中,只要未达到指定的爬行深度,就继续。这一阶段是实际抓取网页的过程,它采用1个生产者(QueueFeeder)-多个消费者(FetchThread)的模型。QueueFeeder从输入中读取fetchlist并产生FetchItemQueue队列,该队列中包含了描述将要爬行的项目的FetchItem。这个队列是以要爬行的主机划分的,每个主机对应一个队列。但是在同一时刻,爬行FetchItem的数量受并发线程数的限制。

Read More

数据库操作总结

数据库操作总结

注释

行内注释:–
单行注释:#
多行注释:/ /

检索数据 SELECT

  • 检索单个列:SELECT prod_name FROM Products;
  • 检索多个列:SELECT pro_id,prod_name,pro_price FROM Products;
  • 检索所有列:SELECT * FROM Products;

检索不同的值:DISTINCT 只返回不同的值

SELECT prod_name FROM Products LIMIT 5 OFFSET 2
LIMIT指检索的行数,OFFSET指从哪里开始

排序检索结果: ORDER BY (位于SQL语句的最后)

  • 列名
  • 相对位置
  • 排序方向:默认升序,降序是DESC(只对它前面的关键字生效)

WHERE过滤结果
SELECT prod_name FROM Products WHERE prod_price <= 10;

BETWEEN可以检索范围值
SELECT prod_name FROM Products WHERE prod_price BETWEEN 5 AND 10;

空值检测IS NULL
SELECT prod_name FROM Products WHERE prod_price IS NULL;

数据库操作总结

数据库操作总结

注释

行内注释:–
单行注释:#
多行注释:/ /

检索数据 SELECT

  • 检索单个列:SELECT prod_name FROM Products;
  • 检索多个列:SELECT pro_id,prod_name,pro_price FROM Products;
  • 检索所有列:SELECT * FROM Products;

检索不同的值:DISTINCT 只返回不同的值

SELECT prod_name FROM Products LIMIT 5 OFFSET 2
LIMIT指检索的行数,OFFSET指从哪里开始

排序检索结果: ORDER BY (位于SQL语句的最后)

  • 列名
  • 相对位置
  • 排序方向:默认升序,降序是DESC(只对它前面的关键字生效)

WHERE过滤结果
SELECT prod_name FROM Products WHERE prod_price <= 10;

BETWEEN可以检索范围值
SELECT prod_name FROM Products WHERE prod_price BETWEEN 5 AND 10;

空值检测IS NULL
SELECT prod_name FROM Products WHERE prod_price IS NULL;

组合

Nutch学习记录:Generator

#Nutch学习记录:Generator

在Inject过后,程序返回到crawl的main方法中继续执行,接下来进入到一个循环,循环的终止条件是达到指定的爬行深度。在循环中依次进行generate和fetch两个操作,每次循环产生一个segment,位于crawl/segments下,以generate方法调用的时间作为这次循环产生目录的名称。首先分析Generate操作,generate操作有三步MapReduce过程

Read More

Nutch学习记录:Injector

#Nutch学习记录:Injector

因为nutch是建立在Hadoop架构之上的,在以后的程序代码中使用了MapReduce算法和HDFS(分布式文件系统),所以建议先把这些方面基本的知识看一下,这样在看到nutch代码中一些MapReduce的配置操作时也能理解什么意思。

Read More