GVKun编程网logo

Apache Nutch:FetcherJob在Gora中引发NoSuchElementException(fetch no-cors)

13

最近很多小伙伴都在问ApacheNutch:FetcherJob在Gora中引发NoSuchElementException和fetchno-cors这两个问题,那么本篇文章就来给大家详细解答一下,同

最近很多小伙伴都在问Apache Nutch:FetcherJob在Gora中引发NoSuchElementExceptionfetch no-cors这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Cursor.hasNext引发java.util.NoSuchElementException、Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException、getConstructor在Java中引发NoSuchMethodException、Java 异常 NoSuchElementException等相关知识,下面开始了哦!

本文目录一览:

Apache Nutch:FetcherJob在Gora中引发NoSuchElementException(fetch no-cors)

Apache Nutch:FetcherJob在Gora中引发NoSuchElementException(fetch no-cors)

我开箱即用运行Apache Nutch 2.3.1,它使用Gora
0.6.1。我已按照此处的说明进行操作:http :
//wiki.apache.org/nutch/RunNutchInEclipse

InjectorJob。很好。

现在,我正在运行FetcherJob,而Gora MemStore用作数据存储。我gora.properties包含

gora.datastore.default=org.apache.gora.memory.store.MemStore

这引发:

2016-10-02 22:55:54,605 ERROR mapreduce.GoraRecordReader (GoraRecordReader.java:nextKeyValue(121)) - Error reading Gora records: null2016-10-02 22:55:54,605 INFO  mapred.MapTask (MapTask.java:flush(1460)) - Starting flush of map output2016-10-02 22:55:54,614 INFO  mapred.LocalJobRunner (LocalJobRunner.java:runTasks(456)) - map task executor complete.2016-10-02 22:55:54,615 WARN  mapred.LocalJobRunner (LocalJobRunner.java:run(560)) - job_local874667143_0001java.lang.Exception: java.lang.RuntimeException: java.util.NoSuchElementException    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)Caused by: java.lang.RuntimeException: java.util.NoSuchElementException    at org.apache.gora.mapreduce.GoraRecordReader.nextKeyValue(GoraRecordReader.java:122)    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:556)    at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)    at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)Caused by: java.util.NoSuchElementException    at java.util.concurrent.ConcurrentSkipListMap.firstKey(ConcurrentSkipListMap.java:2036)    at org.apache.gora.memory.store.MemStore.execute(MemStore.java:128)    at org.apache.gora.query.impl.QueryBase.execute(QueryBase.java:73)    at org.apache.gora.mapreduce.GoraRecordReader.executeQuery(GoraRecordReader.java:67)    at org.apache.gora.mapreduce.GoraRecordReader.nextKeyValue(GoraRecordReader.java:109)    ... 12 more2016-10-02 22:55:55,383 INFO  mapreduce.Job (Job.java:monitorAndPrintJob(1360)) - Job job_local874667143_0001 running in uber mode : false2016-10-02 22:55:55,385 INFO  mapreduce.Job (Job.java:monitorAndPrintJob(1367)) -  map 0% reduce 0%2016-10-02 22:55:55,387 INFO  mapreduce.Job (Job.java:monitorAndPrintJob(1380)) - Job job_local874667143_0001 failed with state FAILED due to: NA2016-10-02 22:55:55,396 INFO  mapreduce.Job (Job.java:monitorAndPrintJob(1385)) - Counters: 0Exception in thread "main" java.lang.RuntimeException: job failed: name=, jobid=job_local874667143_0001    at org.apache.nutch.util.NutchJob.waitForCompletion(NutchJob.java:119)    at org.apache.nutch.fetcher.FetcherJob.run(FetcherJob.java:205)    at org.apache.nutch.fetcher.FetcherJob.fetch(FetcherJob.java:251)    at org.apache.nutch.fetcher.FetcherJob.run(FetcherJob.java:314)    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)    at org.apache.nutch.fetcher.FetcherJob.main(FetcherJob.java:321)

这种情况发生在Nutch和Gora的深处,我不知道为什么会这样。我尝试升级到Gora
0.8,但存在相同的问题。我尝试将Gora降级到0.6,同样的问题。我想切换到hBase之类的其他数据存储,但这对我目前的需求来说有点过头了。

请帮我解决这个问题。

答案1

小编典典

我确认问题出在MemStore。

在0.6.1中存在一个错误:https :
//github.com/apache/gora/blob/apache-gora-0.6.1/gora-
core/src/main/java/org/apache/gora/memory/store
/MemStore.java#L128

这已经在master中解决:https :
//github.com/apache/gora/blob/master/gora-
core/src/main/java/org/apache/gora/memory/store/MemStore.java#L155,对#firstKey()的访问具有保护#isEmpty()

但是,不要尝试更新到Gora 0.7-SNAPSHOT,因为Nutch到目前为止尚未适应它。

编辑

如果您想在Nutch 2.x中使用Gora-0.7-SNAPSHOT,也许您可​​以这样做:

  1. 下载版本为0.7-SNAPSHOT的Gora主分支
  2. 不要mvn install在山/安装它在Maven的本地仓库
  3. 将此补丁应用到Nutch:https : //paste.apache.org/jjqz,以便Nutch 2.3.1将与Gora 0.7-SNAPSHOT一起使用
  4. 做Nutch的教学资料

我希望它能起作用:)

编辑2

关于使用HBase,进行本地安装非常容易。

  1. 如Nutch2Tutorial中所述,下载HBase 0.98.8-hadoop2
  2. 在目录中添加tar.gz文件,例如: /home/you/hbase
  3. cd /home/you/hbase/bin
  4. ./start-hbase.sh

现在,您可以启动并运行HBase。配置Nutch:

ivy / ivy.xml:查看@Emmanuel关于HBase的ivy依赖项配置的评论。

gora.properties:

gora.datastore.default=org.apache.gora.hbase.store.HBaseStoregora.datastore.autocreateschema=truegora.datastore.scanner.caching=100

nutch-site.xml:

<configuration><property> <name>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Default class for storing data</description></property></configuration>

做完了 它将采用HBase的所有默认配置:localhost,/ tmp / …,blablabla

Cursor.hasNext引发java.util.NoSuchElementException

Cursor.hasNext引发java.util.NoSuchElementException

public String ForDate(String date) {    MongoCursor<Document> cursor = collection.find(eq("date", date)).iterator();    basicb b = new basicb();    while (cursor.hasNext()) {       b.setDepartament(cursor.next().getString("departament"));       b.setText(cursor.next().getString("text"));       b.setTitle(cursor.next().getString("title"));       lista.add(b);    }}

我只想从mongodb信息中处理对象,但是当我执行此方法时,要使一些对象成为对象,但总是返回该错误java.util.NoSuchElementException。

答案1

小编典典

可能的问题是,您next在一个循环中调用了3次方法。您应该调用一次并将其结果存储在变量中,因为它会next检索迭代中的下一个元素

while (cursor.hasNext()) {   Document element = cursor.next();   b.setDepartament(element.getString("departament"));   b.setText(element.getString("text"));   b.setTitle(element.getString("title"));   lista.add(b);}

Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException

Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException

运行mapreduce程序时出现错误Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException,运行环境ubuntu12.04 64bit, hadoop2.2.0 64bit,eclipse luna 4.4.1, 具体错误如下图所示:

getConstructor在Java中引发NoSuchMethodException

getConstructor在Java中引发NoSuchMethodException

您需要确保子类中存在all-args构造函数。

以下示例创建一个newSubInstance

// using Lombok annotations for brevity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
abstract class SuperClazz {
    private String str;
    private char chr;
    private int x;

    // getters/setters/default and all-args constructors provided by Lombok
}


class SubClazz1 extends SuperClazz {
    public SubClazz1(String str,char c,int i) { // providing constructor in the child class
        super(str,c,i);
    }
}

// test
SuperClazz oldSubInstance = new SubClazz1("def",'g',10);
SuperClazz newSubInstance;

newSubInstance = oldSubInstance.getClass()
                               .getConstructor(String.class,char.class,int.class)
                               .newInstance("abc",'e',6);

System.out.println(newSubInstance);

输出(在基类级别被toString覆盖)

SuperClazz(str=abc,chr=e,x=6)

Java 异常 NoSuchElementException

Java 异常 NoSuchElementException

问题背景

公司测试环境出现的奇怪问题,环境代码刚部署完,测试时报这个错,错误信息也不是很详细,就是简单的一句异常描述

1.站在巨人的肩膀上找答案

这个异常的意思是线程访问越界 ,百度搜索了几次,大体的原因都是循环中引起的问题,但是我这里没有循环,代码就不贴了。框架用到的是 Dubbo 2.6.x,后来想到可能是框架的 bug 导致的吧,具体我也没搞懂,不过最后重新在测试环境上重新构建了一边代码后,这个问题解决了。
不由的想要调侃一句,服务重启真是解决疑难杂症问题的万能大法

如有遇到类似问题,不妨试试重启?

我们今天的关于Apache Nutch:FetcherJob在Gora中引发NoSuchElementExceptionfetch no-cors的分享就到这里,谢谢您的阅读,如果想了解更多关于Cursor.hasNext引发java.util.NoSuchElementException、Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException、getConstructor在Java中引发NoSuchMethodException、Java 异常 NoSuchElementException的相关信息,可以在本站进行搜索。

本文标签: