2014-01-11 1 views
0

код здесь: github linkКак использовать Lucene ShingleFilter: Не удалось найти реализующий класс для org.apache.lucene.analysis.tokenattributes.OffsetAttribute

Ошибка:

Ren: нуль на []]: java.lang.IllegalArgumentException: Не удалось найти класс реализации для org.apache.lucene.analysis.tokenattributes.OffsetAttribute at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext (PhysicalOperator.java:338)

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)

по адресу 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 я не нашел o.a.lucene.analysis.tokenatributes.OffsetAttributeImpl в datafu-1.2.1-SNAPSHOT.jar

AttributeSource Lucene в 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 явно использует ссылки на классы во время компиляции, чтобы определить, что происходит в финальной банке. Вот почему он не подбирает классы атрибутов Impl, которые разрешаются во время выполнения.

Я не достаточно знаком с autojar исправит ошибку, но если есть способ явно включать в себя классы, вы должны включать в себя org.apache.lucene.analysis.tokenattributes.*Impl