gpt4 book ai didi

hadoop - 如何使用Lucene ShingleFilter:找不到org.apache.lucene.analysis.tokenattributes.OffsetAttribute的实现类

转载 作者:行者123 更新时间:2023-12-02 20:07:39 26 4
gpt4 key购买 nike

代码在这里:github link

错误是:

ren:在[]]处为null:java.lang.IllegalArgumentException:找不到org.apache.lucene.analysis.tokenattributes.OffsetAttribute的实现类
在org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:338)

在org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.processPlan(POForEach.java:378)上

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

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

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

在org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.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.analysis.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)

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

...另外9个

最佳答案

这似乎是包装问题。建立数据集时,我在o.a.lucene.analysis.tokenatributes.OffsetAttributeImpl中找不到datafu-1.2.1-SNAPSHOT.jar
Lucene的AttributeSource finds implementations for attribute classes at runtime,因此除了o.a.lucene.analysis.tokenatributes.OffsetAttributeImpl类外,还必须将datafu-1.2.1-SNAPSHOT.jar打包在o.a.lucene.analysis.tokenatributes.OffsetAttribute中。

其他属性类也可能会遇到此问题。

据我了解,autojar是在编译时显式地遵循类引用,以确定最终jar中的内容。这就是为什么它不选择属性Impl类的原因,这些属性在运行时已解析。

我对autojar不够熟悉,无法提出修复建议,但是如果有一种方法可以显式包含类,则应包含org.apache.lucene.analysis.tokenattributes.*Impl

关于hadoop - 如何使用Lucene ShingleFilter:找不到org.apache.lucene.analysis.tokenattributes.OffsetAttribute的实现类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com