热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ApacheNutch1.3学习笔记十(插件扩展)

1.自己扩展一个简单的插件这里扩展一个Nutch的URLFilter插件,叫MyURLFilter1.1生成一个Package首先生成一个与urlfilte

 

1. 自己扩展一个简单的插件

   这里扩展一个NutchURLFilter插件,叫MyURLFilter

   1.1 生成一个Package

    首先生成一个与urlfilter-regex类似的包结构
org.apache.nutch.urlfilter.my

   1.2 在这个包中生成相应的扩展文件

    再生成一个MyURLFilter.java文件,内容如下:

 

  1. package org.apache.nutch.urlfilter.my;  
  2.     
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6.     
  7.     
  8. import org.apache.hadoop.conf.Configuration;  
  9. import org.apache.nutch.net.URLFilter;  
  10. import org.apache.nutch.urlfilter.prefix.PrefixURLFilter;  
  11.     
  12.     
  13. public class MyURLFilter implements URLFilter{   // 这里的继承自NutchURLFilter扩展  
  14.     private Configuration conf;  
  15.         
  16.     public MyURLFilter()  
  17.     {}  
  18.     @Override  
  19.     public String filter(String urlString) {  // url字符串进行过滤  
  20.         // TODO Auto-generated method stub  
  21.         return "My Filter:"+ urlString;  
  22.     }  
  23.     
  24.     
  25.     @Override  
  26.     public Configuration getConf() {  
  27.         // TODO Auto-generated method stub  
  28.         return this.conf;  
  29.     }  
  30.     
  31.     
  32.     @Override  
  33.     public void setConf(Configuration conf) {  
  34.         // TODO Auto-generated method stub  
  35.         this.conf = conf;  
  36.     }  
  37.         
  38.     public static void main(String[] args) throws IOException  
  39.     {  
  40.              
  41.         MyURLFilter filter = new MyURLFilter();  
  42.             
  43.         BufferedReader in=new BufferedReader(new InputStreamReader(System.in));  
  44.         String line;  
  45.         while((line=in.readLine())!=null) {  
  46.           String out=filter.filter(line);  
  47.           if(out!=null) {  
  48.             System.out.println(out);  
  49.           }  
  50.         }  
  51.     }  
  52.     
  53.     
  54. }  

 

    1.3 打包成jar包并生成相应的plugin.xml文件

打包可以用ivy或者是eclipse来打,每一个plugin都有一个描述文件plugin.xml,内容如下:

 

  1.   
  2.   id="urlfilter-my"  
  3.   name="My URL Filter"  
  4.   version="1.0.0"  
  5.   provider-name="nutch.org">  
  6.     
  7.     
  8.     
  9.       name="urlfilter-my.jar">  
  10.          name="*"/>  
  11.        
  12. 如果这里你的插件有依赖第三方库的话,可以这样写  
  13.       name="fontbox-1.4.0.jar"/>  
  14.       name="geronimo-stax-api_1.0_spec-1.jar"/>  
  15.   -->  
  16.     
  17.     
  18.     
  19.     
  20.       plugin="nutch-extensionpoints"/>  
  21.     
  22.     
  23.     
  24.    id="org.apache.nutch.net.urlfilter.my"  
  25.              name="Nutch My URL Filter"  
  26.              point="org.apache.nutch.net.URLFilter">  
  27.       id="MyURLFilter"  
  28.                      class="org.apache.nutch.urlfilter.prefix.MyURLFilter"/>  
  29.      
  30.       id="PrefixURLFilter"  
  31.                      class="org.apache.nutch.net.PrefixURLFilter">  
  32.         name="file" value="urlfilter-prefix.txt"/>  
  33.        
  34.      -->  
  35.     
  36.     
  37.     
  38. lt;/plugin>  

 

    1.4 把需要的包与配置文件放入plugins目录中

最后把打好的jar包与plugin.xml放到一个urlfilter-my文件夹中,再把这个文件夹到到nutchplugins目录下

 

2. 使用bin/nutch plugin来进行测试

在运行bin/nutch plugin命令之前你要修改一下nutch-site.xml这个配置文件,在下面加入我们写的插件,如下

 

  1.   
  2.   plugin.includes  
  3.   protocol-http|urlfilter-(regex|prefix|my)|parse-(html|tika)|index-(basic|anchor)|scoring-opic|urlnormalizer-(pass|regex|basic)  
  4.   Regular expression naming plugin directory names to  
  5.   include.  Any plugin not matching this expression is excluded.  
  6.   In any case you need at least include the nutch-extensionpoints plugin. By  
  7.   default Nutch includes crawling just HTML and plain text via HTTP,  
  8.   and basic indexing and search plugins. In order to use HTTPS please enable   
  9.   protocol-httpclient, but be aware of possible intermittent problems with the   
  10.   underlying commons-httpclient library.  
  11.     
  12.   


在本机测试结果如下:

 

  1. lemo@debian:~/Workspace/java/Apache/Nutch/nutch-1.3$ bin/nutch plugin urlfilter-my org.apache.nutch.urlfilter.my.MyURLFilter  
  2.        urlString1  
  3.        My Filter:urlString1  
  4.        urlString2  
  5.        My Filter:urlString2  


3.
总结
   
这里只是写了一个简单的插件,当然你可以根据你的需求写出更加复杂的插件
.

4. 参考

http://wiki.apache.org/nutch/WritingPluginExample#The_Example

 

作者:http://blog.csdn.net/amuseme_lu

 

 


 

 

 

 

 

相关文章阅读及免费下载:

 

 

 

Apache Nutch 1.3 学习笔记目录

 

 

 

Apache Nutch 1.3 学习笔记一

 

 

 

Apache Nutch 1.3 学习笔记二

 

 

 

Apache Nutch 1.3 学习笔记三(Inject)

 

 

 

Apache Nutch 1.3 学习笔记三(Inject CrawlDB Reader)

 

 

 

Apache Nutch 1.3 学习笔记四(Generate)

 

 

 

Apache Nutch 1.3 学习笔记四(SegmentReader分析)

 

 

 

Apache Nutch 1.3 学习笔记五(FetchThread)

 

 

 

Apache Nutch 1.3 学习笔记五(Fetcher流程)

 

 

 

Apache Nutch 1.3 学习笔记六(ParseSegment)

 

 

 

Apache Nutch 1.3 学习笔记七(CrawlDb - updatedb)

 

 

 

Apache Nutch 1.3 学习笔记八(LinkDb)

 

 

 

Apache Nutch 1.3 学习笔记九(SolrIndexer)

 

 

 

Apache Nutch 1.3 学习笔记十(Ntuch 插件机制简单介绍)

 

 

 

Apache Nutch 1.3 学习笔记十(插件扩展)

 

 

 

Apache Nutch 1.3 学习笔记十(插件机制分析)

 

 

 

Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)

 

 

 

Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)

 

 

 

Apache Nutch 1.3 学习笔记十二(Nutch 2.0 的主要变化)

 

 

 

更多《Apache Nutch文档》,尽在开卷有益360 http://www.docin.com/book_360

 


推荐阅读
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • importorg.apache.hadoop.hdfs.DistributedFileSystem;导入方法依赖的package包类privatevoidtestHSyncOpe ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 开发笔记:Squid代理服务
    本文由编程笔记#小编为大家整理,主要介绍了Squid代理服务相关的知识,希望对你有一定的参考价值。Squid服务基础缓存代理概述 ... [详细]
author-avatar
夜幕下的猫眼_398
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有