2

次のように、分散 (デプロイ) モードで Nutch クロールを行った後:

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

フェッチされた各 URL をそのコンテンツと共にマップ削減に適した形式で抽出する必要があります。以下の readeg コマンドを使用すると、コンテンツが取得されますが、出力形式がマップ縮小に適していません。

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

これを達成する方法について何か提案はありますか?

4

2 に答える 2

0

このbin/nutch readsegコマンドは、map reduce 形式ではなく、人間が判読できる形式で出力を生成します。データは、map-reduce 形式のセグメントに格納されます。map-reduce 形式のセグメントからその情報を直接引き出すことができるとは思いません。

あなたの懸念のためのいくつかのオプション:

  1. セグメントは、それ自体が map-reduce 形式のファイルです。それらを再利用できますか?
  2. コマンドの出力はreadseg、小さな map-reduce コードを記述することで map-reduce 形式に変換できます。
于 2012-04-12T05:45:14.077 に答える
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 :
[1] http://nutch.apache.org/apidocs-1.3/index -all.html

于 2012-04-12T22:41:19.963 に答える