我开箱即用运行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: null
2016-10-02 22:55:54,605 INFO mapred.MapTask (MapTask.java:flush(1460)) - Starting flush of map output
2016-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_0001
java.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 more
2016-10-02 22:55:55,383 INFO mapreduce.Job (Job.java:monitorAndPrintJob(1360)) - Job job_local874667143_0001 running in uber mode : false
2016-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: NA
2016-10-02 22:55:55,396 INFO mapreduce.Job (Job.java:monitorAndPrintJob(1385)) - Counters: 0
Exception 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之类的其他数据存储,但这对我目前的需求来说有点过头了。
请帮我解决这个问题。
我确认问题出在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,也许您可以这样做:
mvn install
在山/安装它在Maven的本地仓库我希望它能起作用:)
关于使用HBase,进行本地安装非常容易。
/home/you/hbase
cd /home/you/hbase/bin
./start-hbase.sh
现在,您可以启动并运行HBase。配置Nutch:
ivy / ivy.xml:查看@Emmanuel关于HBase的ivy依赖项配置的评论。
gora.properties:
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
gora.datastore.autocreateschema=true
gora.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
Gora 是一个应用于 NoSQL 数据库的 ORM 框架,支持包括:Apache HBase/Apache Cassandra
我正在使用Mojang API从Minecraft玩家的用户名返回UUID。此方法在参数(我们想要知道UUID的播放器的用户名)中接受一个字符串。为了使用API的resultat,我使用SimpleJSON库(将JSON结果解析为要返回的字符串)。 我的方法抛出2个检查过的异常:IOExeption和Parse异常,因为我想要。当错误的用户名(因此不存在用户名)时,API返回一个空JSON对象,在
问题内容: 代码就是这样 这在Linux系统上运行良好,但在Windows上却无法运行。其显示EOFError。我必须使用模式才能使其在Windows上运行。 为什么会发生这种情况,以及如何解决? 问题答案: 读取和写入泡菜时始终使用模式(用于写入和读取)。要“修复”现有文件,请使用转换其换行符。
我正尝试在类的方法中使用(以支持拖放)。我想显示我拖动的文件的导入进度。然而,它并不起作用。我不明白问题是什么,或者是什么引起的。 例外情况:
问题内容: 如果我 在表上有,如何抛出错误以阻止对该表进行更新? 问题答案: 这是一种可行的技巧。这不是干净的,但看起来可能可行: 本质上,您只是尝试更新不存在的列。
问题内容: 有没有一种优雅的方法来处理块中引发的异常? 例如: 如何避免在/ 在块? 问题答案: 我通常这样做: 别处: