我有一个我似乎无法调试的Nutch问题。
我开始使用Nutch抓取并将我们的页面索引到solr核心1.它运行正常。工作就像应该完成一样。
虽然我想开始索引或分页到我们的solr核心0,以及我们想要索引的其他项目。
索引不是问题,它会抓取并索引正常。但是在核心0上,它在索引末尾的重复数据删除任务上仍然失败。我收到以下错误(如下)。据我所知,schema.xml和solrconfig.xml文件在core0和core1上都有相同的东西,除了在core0中,不再需要url字段,因为其他索引项没有url,所以id field是所有这些字段的标准必填字段。这可能导致问题吗?什么是重复数据删除尝试做什么以及它的方式是什么?我怎么能通过这个?感谢:
2013-07-26 16:55:17,797 INFO solr.SolrIndexWriter - Indexing 157 documents
2013-07-26 16:55:30,407 INFO solr.SolrMappingReader - source: content dest: content
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: title dest: title
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: host dest: host
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: segment dest: segment
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: boost dest: boost
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: digest dest: digest
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: tstamp dest: tstamp
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: url dest: id
2013-07-26 16:55:30,444 INFO solr.SolrMappingReader - source: url dest: url
2013-07-26 16:55:31,590 INFO indexer.IndexingJob - Indexer: finished at 2013-07-26 16:55:31, elapsed: 00:00:19
2013-07-26 16:55:31,593 INFO solr.SolrDeleteDuplicates - SolrDeleteDuplicates: starting at 2013-07-26 16:55:31
2013-07-26 16:55:31,593 INFO solr.SolrDeleteDuplicates - SolrDeleteDuplicates: Solr url: http://<domain>:<port>/solr/core0/
2013-07-26 16:55:32,043 WARN mapred.FileOutputCommitter - Output path is null in cleanup
2013-07-26 16:55:32,043 WARN mapred.LocalJobRunner - job_local1142877999_0055
java.lang.Exception: java.lang.NullPointerException
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
Caused by: java.lang.NullPointerException
at org.apache.hadoop.io.Text.encode(Text.java:388)
at org.apache.hadoop.io.Text.set(Text.java:178)
at org.apache.nutch.indexer.solr.SolrDeleteDuplicates$SolrInputFormat$1.next(SolrDeleteDuplicates.java:270)
at org.apache.nutch.indexer.solr.SolrDeleteDuplicates$SolrInputFormat$1.next(SolrDeleteDuplicates.java:241)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:230)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:210)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
答案 0 :(得分:0)
由于文档没有url字段,因此文档的id为空,因此在运行以下方法时抛出空指针异常。
下面是来自nutch 1.7 trunk的SolrDeleteDuplicate类的代码,其中solr记录被id字段删除。
updateRequest.deleteById(solrRecord.id);
updateRequest =&gt; org.apache.solr.client.solrj.request.UpdateRequest的实例
solrRecord =&gt;需要删除的solr文档。