2012-04-11 36 views
2

分佈式(部署)模式Nutch的抓取之後如下:提取擷取的網頁中的Map Reduce友好的格式

bin/nutch crawl s3n://..... -depth 10 -topN 50000 -dir /crawl -threads 20 

我需要提取與它一起取每個URL是在一個地圖縮小內容友好的格式。通過使用下面的readseg命令,可以獲取內容,但輸出格式不適用於映射縮減。

bin/nutch readseg -dump /crawl/segments/* /output -nogenerate -noparse -noparsedata -noparsetext 

理想的輸出應爲以下格式:

http://abc.com/1  content of http://abc.com/1 
http://abc.com/2  content of http://abc.com/2 

就如何實現這一目標有什麼建議?

回答

0

答案在於調整nutch的源代碼。事實證明這很簡單。導航到SegmentReader.java文件在apache-nutch-1.4-bin/src/java/org/apache/nutch/segment

裏面SegmentReader類是這樣的方法,其reduce是負責產生人類可讀輸出的bin/nutch readseg命令生成。改變StringBuffer dump變量,因爲您認爲合適 - 這將保存給定url的整個輸出,該變量由key變量表示。

確保您運行ant以創建新的二進制文件,並且進一步調用bin/nutch readseg應以您的自定義格式生成輸出。

這些參考文獻在導航代碼是極其有用的:
[1] http://nutch.apache.org/apidocs-1.4/overview-summary.html
[2] http://nutch.apache.org/apidocs-1.3/index-all.html

0

bin/nutch readseg命令以人可讀格式生成輸出,而不是映射縮小格式。數據以map-reduce格式存儲在段中。我不認爲你可以直接從map-reduce格式的區域中提取這些信息。

的關心幾個選項:

  1. 段本身映射簡化格式的文件。你能重新使用這些嗎?
  2. readseg命令的輸出可以通過編寫一個小的map-reduce代碼轉換爲map-reduce形式。
+0

那對@TejasP我結束了修改的Nutch的源代碼中的答案 – Sid 2012-04-13 23:09:46