2014-01-11 60 views
0

代碼是在這裏:github link如何利用Lucene ShingleFilter:找不到實現類org.apache.lucene.analysis.tokenattributes.OffsetAttribute

錯誤是:

仁:空在[]]: java.lang.IllegalArgumentException:在org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:338)

找不到org.apache.lucene.analysis.tokenattributes.OffsetAttribute的實現類

at org.apache.pig.backend.hadoop.executionengine.physicalLayer.rel ationalOperators.POForEach.processPlan(POForEach.java:378)

在org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.getNextTuple(POForEach.java:298)

在有機apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.runPipeline(PigGenericMapBase.java:282)

在org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.java:277 )

at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGe nericMapBase.java:64)

在org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)

在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java: 764)

在org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)

在org.apache.hadoop.mapred.LocalJobRunner $ Job.run(LocalJobRunner.java:212)

引起:java.lang.IllegalArgumentException:無法找到org.apache.lucene.analy的實現類sis.tokenattributes.OffsetAttribute

在org.apache.lucene.util.AttributeSource $ AttributeFactory $ DefaultAttributeFactory.getClassForInterface(AttributeSource.java:94)

在org.apache.lucene.util.AttributeSource $ AttributeFactory $ DefaultAttributeFactory .createAttributeInstance(AttributeSource.java:67)

在org.apache.lucene.util.AttributeSource.addAttribute(AttributeSource.java:276)

在org.apache.lucene.analysis.standard.StandardTokenizer。( StandardTokenizer.java:171)

在datafu.pig.text.lucene.NGramTokenize.exec(NGramTokenize.java:48)

在datafu.pig.text.lucene.NGramTokenize.exec(NGramTokenize.java:33)

在org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POUserFunc.getNext(POUserFunc.java:330)

在org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POUserFunc.getNextDataBag (POUserFunc.java:374)

at org.apache.pig.backend.hadoop.executionengine。physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:309)

... 9個

回答

1

這似乎是一個包裝的問題。當建立datafu我沒有找到在datafu-1.2.1-SNAPSHOT.jar

Lucene的AttributeSource finds implementations for attribute classes at runtimeo.a.lucene.analysis.tokenatributes.OffsetAttributeImpl,所以除了o.a.lucene.analysis.tokenatributes.OffsetAttribute類打包在datafu-1.2.1-SNAPSHOT.jaro.a.lucene.analysis.tokenatributes.OffsetAttributeImpl這是必要的。

您可能會遇到與其他屬性類一樣的問題。

從我所瞭解的內容來看,autojar在編譯時顯式跟在類引用之後,以便確定最終jar中的內容。這就是爲什麼它沒有選擇在運行時解析的屬性Impl類。

我對autojar建議修復不夠熟悉,但如果有明確包含類的方法,您應該包含org.apache.lucene.analysis.tokenattributes.*Impl