Nutch index源代码解析二)

Nutch index源代码解析二) 博客分类: 大数据处理研究 Ntuch
solrhadoop爬虫

接着上篇文档~~~~~

上篇文章写到,Nutch采用一个MR对爬取下来的文档进行清洗和封装成一个action列表。

接下来介绍怎么爬取下来的数据如何推送给solr。

----------------------------------------------------华丽的分割线---------------------------------------------

Ntuch自定义了一个 IndexerOutputFormat,这个类继承于FileOutputFormat Override getRecordWriter方法

代码如下:

public class IndexerOutputFormat extends FileOutputFormat<Text, NutchIndexAction> {

@Override

public RecordWriter<Text, NutchIndexAction> getRecordWriter(FileSystem ignored,

JobConf job, String name, Progressable progress) throws IOException {

...

}

方法里面调用Nutch自定义的一个接口NutchIndexWriter,我们看下他的一个实现类SolrWriter,我们主要看下他的close方法,代码如下:

public void close() throws IOException {

try {

if (!inputDocs.isEmpty()) {

LOG.info("Indexing " + Integer.toString(inputDocs.size()) + " documents");

if (numDeletes > 0) {

LOG.info("Deleting " + Integer.toString(numDeletes) + " documents");

}

UpdateRequest req = new UpdateRequest();

req.add(inputDocs);

req.setParams(params);

req.process(solr);

inputDocs.clear();

}

// solr.commit();

} catch (final SolrServerException e) {

throw makeIOException(e);

}

在关闭的时候,Nutch会将封装好的数据采用基于http的POST的方法发送一个请求数据包给solr的服务器,solr.commit();这个方法在前面一篇文章中解释有些偏差,solr的整个事务都是在solr服务器端的,这跟以前的的事务有所区别,而这个方法就是再发送一个请求,要求提交当前的事务。

至于之前索引的增删查改也在这个类中实现,如想知道详情,可查看这个类实现。

至此,Nutch的整个index流程基本完成了。

由于时间仓促只是介绍了大概流程,如想了解其中一些细节问题,如有兴趣可以留言。或者发站内信给我。

第一次写,欢迎留言批评~~~~

时间: 2024-09-23 13:08:04

Nutch index源代码解析二)的相关文章

Nutch index源代码解析(一)

Nutch index源代码解析(一) 博客分类: 大数据处理研究 Nutch solrhadoop索引 Nutch集成slor的索引方法介绍 /** * 建立索引 * @param solrUrl solr的web地址 * @param crawlDb 爬取DB的存放路径:\crawl\crawldb * @param linkDb 爬取link的存放路径:\crawl\linkdb * @param segments 元数据存放路径:\crawl\segments * @param noCo

Spring源代码解析(二):IOC容器在web容器中的启动

以下引用自博客:http://jiwenke-spring.blogspot.com/ 上面我们分析了IOC容器本身的实现,下面我们看看在典型的web环境中,Spring IOC 容器是怎样被载入和起作用的. 简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对 应的建立起一个IOC容器的体系.其中,首先需要建立的是根上下文,这个上下文持有的 对象可以有业务对象,数据存取对象,资源,事物管理器等各种中间层对象.在这个上下 文的基础上,和web MV

asp.net C#生成和解析二维码代码

  类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; 主要源代码: 1.生成二维码 代码如下   QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); String enco

asp.net C#生成和解析二维码的实例代码_实用技巧

类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: 复制代码 代码如下: using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; 主要源代码: 1.生成二维码 复制代码 代码如下: QRCodeEncoder qrCodeEncoder = new QRCodeEncoder()

Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码)

首先声明我们通篇用的都是Google开源框架Zxing,要实现的功能有三个 ,生成普通二维码.生成带有中心图片Logo 的二维码,扫描解析二维码,直接上效果图吧 首先我们需要一个这样的 Zxing 的包类似于这样 接下来需要引入资源 1.drawable 中引入图片 navbar.png 2.layout中引入camera.xml.main.xml.qrcode_capture_page.xml 3.创建raw文件夹并添加beep.ogg 扫描声音 4.合并color.xml,copy ids.

使用zxing工具包创建和解析二维码

关于二维码是什么,以及二维码是如何生成的,我也没有研究得很深入,就不多说了,以免误导大家.请参看: java 二维码原理以及用java实现的二维码的生成.解码 二维码的生成细节和原理 下面是一个可以生成和解析二维码的工具类,该类用到了zxing工具包,我通过Maven去下载的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <dependencies>     <!-- JavaSE包依赖于Core包,因此Core包不需要直接依赖了     <dependency

google zxing 生成和解析二维码

maven 项目pom.xml文件配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&qu

JAVA认证历年真题解析二(附答案)

问题描述 我在网上偶然看到一个网站,这个网站里面的资料非常全,除了一些免费的资料,还有网络视频,觉得非常不错,大家有兴趣或者需要,可以去看看[中华IT学习网]www.100itxx.com内容介绍>>本试卷共有45道题,每题后面都有详细解析.例:1.Whichofthefollowingrangeofshortiscorrect?A.-27--27-1B.0--216-1C.?215--215-1D.?231--231-1翻译下面哪些是short型的取值范围.答案 C解析 短整型的数据类型的长

详细的Android属性动画源代码解析及小结

本文假定你已经对属性动画有了一定的了解,至少使用过属性动画.下面我们就从属性动画最简单的使用开始. ObjectAnimator   .ofInt(target,propName,values[])   .setInterpolator(LinearInterpolator)   .setEvaluator(IntEvaluator)   .setDuration(500)   .start(); 相信这段代码对你一定不陌生,代码中有几个地方是本文中将要重点关注的,setInterpolator