天天看點

nutch recrawl中出現的問題及解決

昨天在recrawl的時候經常出現

錯誤1)

java.lang.ArrayIndexOutOfBoundsException: -1

        at org.apache.lucene.index.MultiReader.isDeleted(MultiReader.java:113)

        at org.apache.nutch.indexer.DeleteDuplicates$InputFormat$DDRecordReader.next(DeleteDuplicates.java:176)

        at org.apache.hadoop.mapred.MapTask$1.next(MapTask.java:157)

        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:46)

        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:175)

        at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:126)

發現這個錯誤經常是由下面的情況導緻

2009-06-28 16:28:34,522 WARN  crawl.Generator (Generator.java:generate(425)) - Generator: 0 records selected for fetching, exiting …

網上發現 Generator: 0...這個是由于分布式環境造成的,但我目前還是單機,而且這個是在recrawl時才出現,後來發現所有的crawldb都被過濾掉了,為什麼crawl的時候沒有這種情況?

原來crawl的時候調用的crawl類,crawl類多加載了一個配置檔案即crawl-tool.xml,此配置檔案将urlfilter.regex.file指定為crawl-urlfilter.txt,覆寫了nutch-default(預設urlfilter.regex.file指定為regex-urlfilter.txt),recrawl直接調用generator類,這個類沒有加載crawl-tool.xml,于是出現問題了,前者使用的是改過的crawl-urlfilter.txt,後者使用的是regex-urlfilter.txt,兩者不一緻,導緻crawl-urlfilter.txt配置的過濾項在regex-0urlfilter.txt不成立,于是全被過濾掉,是以generator為0,進而進一步導緻錯誤1)

暫時的解決辦法是同步crawl-tool.xml和nutch-default.xml

繼續閱讀