nutch eclipse mysql_windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤

nutch2.x 在eclipse中实现抓取数据存进mysql步骤

最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步。

1、环境搭建

1)准备eclipse   安装Maven ,svn

3)把工程转成maven工程,等系统下载依赖包

4)这时候可能有红叉,因为缺少jar包,这是pom的问题

org.restlet.jseorg.restlet2.0.5trueorg.restlet.jseorg.restlet.ext.jackson2.0.5true

比如上面这段二个包就下载不下来。maven仓库没有。需要把restlet的私库加进来:maven-restletPublic online Restlet repositoryhttp://maven.restlet.org

在pom.xml中增加这段,就可以下载了。

这时候按道理,应该就可以了,可是还有些问题,nutch2.x自身配的dadoop-core是1.1.1的版本,在windows环境下运行起来会有问题,如:会抛出权限异常:cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-2070047262

在网上搜索这个异常,别人提供的办法是,使用hadoop-core-1.0.2-modified.jar ( 下载地址 ) 这个包可以不配到maven,加到Lib就可以,看各人爱好。

再按道理讲,这时候该没问题了吧,实践证明 ,还是不行,(先把配置讲完)pom中配的gora-core是最新版0.3,配置mysql的时候会有问题。要改成0.2.1.

另外增加gora-sql包

org.apache.goragora-core0.2.1trueorg.apache.goragora-sql0.1.1-incubatingorg.hsqldbhsqldb

另外还有这几个包要在pom中配置:net.sourceforge.nekohtmlnekohtml1.9.13org.ccil.cowan.tagsouptagsoup1.2.1dk.brics.automatonautomaton1.11-8mysqlmysql-connector-java5.1.26

前3个包是插件代码中有引用到,没配置插件前不报错,但是后面还是要配的。最后一个是mysql的连接器,当然要配啦。 完整的pom文件 。

至此环境差不多,是不是特别麻烦,现在写出来都有这么多要改,在最开始不知道的时候,得花多少时间去应付报错,找问题。

5)安装mysql,创建数据库nutch:

CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;

还有建表:

CREATE TABLE `webpage` (

`id` varchar(255) NOT NULL,

`headers` blob,

`text` mediumtext DEFAULT NULL,

`status` int(11) DEFAULT NULL,

`markers` blob,

`parseStatus` blob,

`modifiedTime` bigint(20) DEFAULT NULL,

`score` float DEFAULT NULL,

`typ` varchar(32) CHARACTER SET latin1 DEFAULT NULL,

`baseUrl` varchar(767) DEFAULT NULL,

`content` longblob,

`title` varchar(2048) DEFAULT NULL,

`reprUrl` varchar(767) DEFAULT NULL,

`fetchInterval` int(11) DEFAULT NULL,

`prevFetchTime` bigint(20) DEFAULT NULL,

`inlinks` mediumblob,

`prevSignature` blob,

`outlinks` mediumblob,

`fetchTime` bigint(20) DEFAULT NULL,

`retriesSinceFetch` int(11) DEFAULT NULL,

`protocolStatus` blob,

`signature` blob,

`metadata` blob,

PRIMARY KEY (`id`)

) ENGINE=InnoDB

DEFAULT CHARSET=utf8

2、配置

把conf目录加到Source中,并在order and export中,放在top位置( 见官方说明 )

配置插件:把src/plugin中,如下图加到Source中(src/plugin/插件名称/src/java)

9cc652518602dbb3a43819825c826dfa.jpg

这些是我们运行org.apache.nutch.crawl.Crawler类时所用到的插件。

下一步,配置文件的配置。

首先是nutch-site.xml的配置(nutch-default.xml这个文件不需要配置,网上有的说要修改这个,其实没有必要,这是默认配置,如果需要修改,我们可以在nutch-site.xml中这个属性,会覆盖nutch-default.xml中的属性)

把nutch-default中下面的一段http的属性复制过来,并给value赋值,默认是没有值的。

然后再增加插件和数据源的配置

plugin.folders./src/pluginDirectories where nutch plugins are located. Each element may be a relative or absolute path. If absolute, it is used as is. If relative, it is searched for on the classpath.parser.character.encoding.defaultutf-8The character encoding to fall back to when no other informationis availablestorage.data.store.classorg.apache.gora.sql.store.SqlStoreThe Gora DataStore class for storing and retrieving data. Currently the following stores are available: org.apache.gora.sql.store.SqlStore Default store. A DataStore implementation for RDBMS with a SQL interface. SqlStore uses JDBC drivers to communicate with the DB. As explained in ivy.xml, currently >= gora-core 0.3 is not backwards compatable with SqlStore. org.apache.gora.cassandra.store.CassandraStore Gora class for storing data in Apache Cassandra. org.apache.gora.hbase.store.HBaseStore Gora class for storing data in Apache HBase. org.apache.gora.accumulo.store.AccumuloStore Gora class for storing data in Apache Accumulo. org.apache.gora.avro.store.AvroStore Gora class for storing data in Apache Avro. org.apache.gora.avro.store.DataFileAvroStore Gora class for storing data in Apache Avro. DataFileAvroStore is a file based store which uses Avro's DataFile{Writer,Reader}'s as a backend. This datastore supports mapreduce. org.apache.gora.memory.store.MemStore Gora class for storing data in a Memory based implementation for tests.

因为是mysql,所以store要使用org.apache.gora.sql.store.SqlStore

其他的如网址过滤的配置,就不讲了,就是正则表达式,修改regex-urlfilter.txt就可以了。

还有个gora.properties文件要配置

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Drivergora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=truegora.sqlstore.jdbc.user=sagora.sqlstore.jdbc.password=888888

3、运行

在工程下新建个文件夹叫urls  里面建个文本文件如seed.txt  内容是一个网址如:http://www.qq.com

在run configuration 中配置java application  main class org.apache.nutch.crawl.Crawler

args配置:urls -depth 3 -topN 5

vm参数配:-Xms64m -Xmx512m    这项如果不配,会报内存溢出。

这时候就可以debug或者run了。按道理是可以出来了

4、其他修改

按道理讲,源码应该不用修改。事实证明,源码也有问题,运行的时候会出错。

GeneratorJob类在运行的时候会出现空指针异常,需要在163行run 方法内,增加:

// generate batchId int randomSeed = Math.abs(new Random().nextInt()); String batchId = (System.currentTimeMillis() / 1000) + "-" + randomSeed; getConf().set(BATCH_ID, batchId);

5、最后

nutch2.x官方版本问题太多了,相当麻烦。写的过程中可能有遗漏,有问题及时交流。

本文转载自:CSDN博客

欢迎加入我爱机器学习QQ14群:336582044

getqrcode.jpg

微信扫一扫,关注我爱机器学习公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值