1. 程式人生 > >nutch2.2.1+mysql整合教程

nutch2.2.1+mysql整合教程

首先,參考笨小蔥之前的部落格,完成mysql的安裝和nutch2.x的安裝編譯。然後,修改一些配置就可以完成整合工作啦

MySQL配置

1.my.cnf配置 分別在[client]、[mysql]下新增“default-character-set=utf8”; 在[mysqld]下新增:character-set-server=utf8
許可權授予 mysql –u root –p xxxx GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY  "xxxx";  建立資料庫與表 手動建立資料庫nutch和資料表webpage【如果不想用預設的庫名和表名也可在nutch安裝後的相關配置檔案中進行修改,見後續說明】,其中webpage的表結構如下: CREATE TABLE `webpage` (
  `id` varchar(767) CHARACTER SET latin1 NOT NULL,   `headers` blob,   `text` mediumtext,   `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(512) CHARACTER SET latin1 DEFAULT NULL,
  `content` mediumblob,   `title` varchar(2048) DEFAULT NULL,   `reprUrl` varchar(512) CHARACTER SET latin1 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,   `batchId` varchar(500) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

這裡如果報錯欄位指定的值過大,那麼把大於255的值改成255就可以。這是因為utf8編碼的字元大小限制

NUTCH2.x配置

注意如果你整合的是nutch2.3,那麼你在測試資料爬取的時候可能會碰到這個錯誤。


這是由於avro這個架包衝突了。2.3中對gora-sql的支援需要用到avro-1.3.3.jar而gora需要avro-1.7.6.jar的支援。所以在配置完nutch對mysql的支援後,執行測試網站爬取時會出這個錯。你可以在$nutch_home/runtime/lib下面看看是否同時存在這兩個架包。(這裡笨小蔥試著去掉一個架包,但是會報其他錯誤。試了好久也沒有解決這個問題。希望大牛能夠指點一下該如何做0.0

由於工作任務要儘快完成,所以暫時先用了nutch2.2.1版本。這裡如果不清楚怎麼下載之前的版本的話,請看下面的截圖。登陸到nutch官網下載頁面:http://nutch.apache.org/downloads.html。

往下拉,找到這個超連結,裡面就是歷屆nutch版本啦。


 配置nutch對mysql的支援,修改${APACHE_NUTCH_HOME}/ivy/ivy.xml檔案,分別:

將以下行的註釋取消

<dependency org=”mysql” name=”mysql-connector-java”rev=”5.1.18″ conf=”*->default”/>

修改以下行

從預設的<dependencyorg="org.apache.gora" name="gora-core" rev="0.3"conf="*->default"/>,改成<dependencyorg="org.apache.gora" name="gora-core"rev="0.2.1"conf="*->default"/>

將以下行的註釋取消

<dependency org="org.apache.gora"name="gora-sql" rev="0.1.1-incubating"conf="*->default" />

注:上述第2和第3項,如果按預設的不做修改,將會在抓取網頁時遇到以下錯誤。


Exception in thread “main” Java.lang.ClassNotFoundException:org.apache.gora.sql.store.SqlStore

3)      資料庫連線配置

編輯${NUTCH_HOME}/conf/gora.properties檔案,註釋掉預設的資料庫連線配置,同時新增以下配置內容:

###############################

#Default MySQL properties        #

###############################

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true

gora.sqlstore.jdbc.user=xxxx(MySQL使用者名稱)

gora.sqlstore.jdbc.password=xxxx(MySQL密碼)

修改nutch-site配置檔案

我的做法是直接將nutch-default檔案另存為nutch-site,然後修改nutch-site內容,包括:

l  新增http.agent.name的值

<property>

<name>http.agent.name</name>

<value>YourNutchSpider</value>

</property>

l  在檔案末尾新增以下內容

<property>

             <name>http.accept.language</name>

             <value>ja-jp,en-us,en-gb,en;q=0.7,*;q=0.3</value>

             <description>Value of theAccept-Language request header field.

             This allows selecting non-Englishlanguage as default one to retrieve.

             It is a useful setting for search enginesbuild for certain national group.

             </description>

   </property>

   <property>

             <name>storage.data.store.class</name>

             <value>org.apache.gora.sql.store.SqlStore</value>

             <description>TheGora DataStore class for storing and retrieving data.

             Currently the following stores areavailable:.

             </description>

   </property>

<property>

         <name>parser.character.encoding.default</name>

         <value>utf-8</value>

         <description>Thecharacter encoding to fall back to when no other information

         isavailable</description>

</property>

l  特別新增以下內容

<property>

<name>generate.batch.id</name>

<value>*</value>

</property>

如果不新增此項內容,則通過”bin/nutch crawl urls –threadsn –depths n”爬取網頁時,在日誌中會看到以下錯誤:


java.lang.NullPointerException 
atorg.apache.avro.util.Utf8.<init>(Utf8.java:37) 
atorg.apache.nutch.crawl.GeneratorReducer.setup(GeneratorReducer.java:100) 
atorg.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174) 
atorg.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 
atorg.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:418) 
atorg.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:398) 

並且“nutch-site”檔案需要儲存為utf-8格式,否則在執行nutch命令時會出現以下錯誤。


Exception in thread “main”java.lang.RuntimeException:com.sun.org.apache.xerces.internal.impl.io.malformedByteSequenceException: 1位元組的UTF-8序列的位元組 1 無效。

網頁抓取配置

1)      設定抓取的網站

cd ${NUTCH_HOME}/runtime/local 

       mkdir -p urls 

       echo 'http://www.tianya.cn' >urls/seed.txt

2)      執行爬取操作

bin/nutch crawl urls -depth 3 -topN 5

執行完在mysql中即可檢視到爬蟲抓取的內容,如下圖:



相關推薦

nutch2.2.1+mysql整合教程

首先,參考笨小蔥之前的部落格,完成mysql的安裝和nutch2.x的安裝編譯。然後,修改一些配置就可以完成整合工作啦 MySQL配置 1.my.cnf配置 分別在[client]、[mysql]下新增“default-character-set=utf8”; 在

Nutch2.2.1基礎教程1】nutch相關異常

1、在任務一開始執行,注入Url時即出現以下錯誤。 InjectorJob: Injecting urlDir: urls  InjectorJob: Using class org.apache.gora.hbase.store.HBaseStore as the Go

wordpress4.6.1與discuz X3.2通過ucenter整合教程

discuz建議使用utf-8編碼程式,gbk不在此整合範圍,原因不做解釋。   由於近來秦王會要擴大影響 ,官網需

2.1 springboot整合servlet

1.整合Sevlet 1.1 通過註解掃描servlet元件的註冊 1.1.1編寫servlet package com.cloudtech.servlet; import java.io.IOException; import javax.servlet.ServletExce

Spark 2.1.0整合CarbonData 1.1.0

1.新建專案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:

Spring Boot-2.1.0整合Mybatis(一)

1.首先匯入依賴 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spri

Spring Boot-2.1.0整合Mybatis

1.首先匯入依賴 <dependency> <groupId>org.mybatis.spring.boot</groupId&g

Spring Boot-2.1.0整合Druid監控資料庫

1.首先匯入依賴 <!--Druid依賴包--> <dependency> <groupId>com.alibaba</groupId> <artifact

windows7 + tensorflow1.2.1離線安裝教程

由於種種原因, 需要在不能聯網的windows作業系統上部署tensorflow環境並能夠成功執行, 參考部落格:http://blog.csdn.net/Suan2014/article/details/76571443 本次離線安裝過程與上述部落格大致相同,不過由於te

nutch2.2.1安裝部署

Enough has changed from Nutch 2.1 to Nutch 2.2 to warrant an update to the installation instructions. These instructions assume Ubuntu 12.04 and Java

asp.net core 2.1 Mysql 資料庫遷移,遇坑記錄

首先來一段錯誤immodeMacBook-Pro:tz.efcontext immo$ dotnet ef database update Unable to create an object of type 'AppDbContext'. Add an implementa

Apache POI系列教程2-1:poi入門教程--excel百萬資料的匯入匯出

一 POI簡介    Apache POI是Apache軟體基金會的開放原始碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。自2009-09-28後,

nutch2.2.1 URLNormalizers 詳解

Java程式碼   org.apache.nutch.net.URLNormalizers    url過濾封裝類,過濾器有3個實現類分別是: Java程式碼   //格式化ur

Nutch2.2.1 開發環境搭建

<property>   <name>http.agent.name</name>   <value>YourNutchSpider</value>  </property>    <property>   <name&

Nutch2.2.1介紹及使用

1. Nutch介紹 Nutch是一個開源的網路爬蟲專案,更具體些是一個爬蟲軟體,可以直接用於抓取網頁內容。 現在Nutch分為兩個版本,1.x和2.x。1.x最新版本為1.7,2.x最新版本為2.2.1。兩個版本的主要區別在於底層的儲存不同。 1.x版本是基於Ha

.netcore持續整合測試篇之 .net core 2.1專案整合測試

系列目錄 從.net到.net core以後,微軟非常努力,以每年一到兩個大版本的頻率在演進.net core,去年相繼釋出了.net core 2.1和2.2,其中2.1是長期支援版,不斷的快速更新一方面快速彌補了相比.net framework缺失的api,同時也帶來了不少激進性的改變,導致很多api

PHP 7.1 + Apache 2.4 + MySQL 5.6非整合環境配置

最近因為一個專案需要用到PHP環境,嫌整合環境“髒”(只是個人用軟體方面的潔癖……不喜歡那種強行集合的東西,現在的整合環境真的還可以,但是我過不了自己心理這關……),就自己扒貼+看各種亂七八糟教程,終於摸索出了PHP 7.1 + Apache 2.4 + MyS

IDEA基於Spring Cloud Netflix(2.1.0RC3)的Spring Cloud Eureka來實現服務治理的微服務架構搭建以及和SSM框架的整合——實戰教程

這裡開始spring cloud微服務架構搭建,用的maven還是之前自己的本地安裝的,repository倉庫也是本地的。 在搭建專案框架之前先簡單學習一下spring cloud。 Spring Cloud 簡介        Spring

整合Nutch2.3.1/Hadoop2.5.2/Hbase1.1.5/Solr4.10.4構建搜尋引擎:安裝及執行

第一次寫部落格,之前從來沒有寫過部落格因為不知道要寫什麼,這次寫部落格是因為自己在學習東西的時候遇見很多問題,國內的技術資料基本都是比較老的,要不就是nutch2.x整合hadoop1.x的,沒有找到整合hadoop2.x的,對hbase的整合度也很少,自己在學習的時候,

Android基礎新手教程——1.2.1 使用Eclipse + ADT + SDK開發Android APP

devtools 進行 string append tle 編寫 android項目 找不到 系統版本號 Android基礎新手教程——1.2.1 使用Eclipse + ADT + SDK開發Android APP