在Nutch以分布式(部署)模式爬行之后,如下所示:
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 :(得分:0)
bin/nutch readseg
命令以人类可读的格式生成输出,而不是map reduce格式。数据以map-reduce格式存储在段中。我不认为你可以直接从map-reduce格式的segements中提取信息。
您担心的几个选项:
readseg
命令的输出转换为map-reduce形式。 答案 1 :(得分:0)
答案在于调整nutch的源代码。事实证明这很简单。导航到SegmentReader.java
apache-nutch-1.4-bin/src/java/org/apache/nutch/segment
文件
SegmentReader
类内部是一个方法reduce
,它负责生成bin/nutch readseg
命令生成的人类可读输出。根据您的需要更改StringBuffer dump
变量 - 这将保存给定网址的整个输出,该输出由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