为Mahout

时间:2016-07-20 13:07:39

标签: java eclipse apache maven hadoop

我是Apache Mahout的新手。我试图在我的环境中使用你的代码,但我遇到了问题。我知道帖子很旧,你可能不会回复我的查询。但我正在写作,因为我被卡住了。

我尝试在我的环境中配置Maven,但由于公司策略,我无法成功配置它,因此我决定手动解决依赖关系,并逐个安装所有必需的依赖项。但我无法找到最后一个图书馆,我试着在网上看了2天,但没有运气。也许有人可以帮助我。

我正在使用Eclipse STS。我确实尝试过Eclipse Mars2,但同样的问题。我安装了以下一组项目特定库。

Commons-cli-2.0.jar,Google-collection-1.0.jar,hadoop-0.20.1-core.jar,log4j-1.2.13.jar,mahout-core0.2-source.jar,mahout-core0 .3-source.jar,mahout-core0.4-job.jar,mahout-core0.7.jar,mahout-core0.8.jar,mahout-math-0.8.jar,mahout-utils-0.5.jar,slf4j -API-1.6.1.jar,slf4j-log4j12-16.1.jar,JRE系统库(JavaSE-1.8。

我为图书馆尝试了各种排列组合,希望能完成我的工作。不幸的是,它没有发生,可能你可以帮助我。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import java.util.List;
import org.apache.hadoop.fs.Path;
import org.apache.mahout.classifier.ClassifierResult;
import org.apache.mahout.classifier.bayes.TrainClassifier;
import org.apache.mahout.classifier.bayes.algorithm.BayesAlgorithm;
import org.apache.mahout.classifier.bayes.common.BayesParameters;
import org.apache.mahout.classifier.bayes.datastore.InMemoryBayesDatastore;
import org.apache.mahout.classifier.bayes.exceptions.InvalidDatastoreException;
import org.apache.mahout.classifier.bayes.interfaces.Algorithm;
import org.apache.mahout.classifier.bayes.interfaces.Datastore;
import org.apache.mahout.classifier.bayes.model.ClassifierContext;
import org.apache.mahout.common.nlp.NGrams;

public class Starter {

    //char var1;
 public static void main( final String[] args ) {
  final BayesParameters params = new BayesParameters();
  params.setGramSize( 1 );
  params.set( "verbose", "true" );
  params.set( "classifierType", "bayes" );
  params.set( "defaultCat", "OTHER" );
  params.set( "encoding", "UTF-8" );
  params.set( "alpha_i", "1.0" );
  params.set( "dataSource", "hdfs" );
  params.set( "basePath", "/tmp/output" );

  //var1 = text.csv;

  try {
      Path input = new Path( "D:\\Apache\\text.csv" );
      Path output = new Path( "D:\\Apache\\output" );
      TrainClassifier.trainNaiveBayes( input, output, params );

      Algorithm algorithm = new BayesAlgorithm();
      Datastore datastore = new InMemoryBayesDatastore( params );
      ClassifierContext classifier = new ClassifierContext( algorithm, datastore );
      classifier.initialize();

      final BufferedReader reader = new BufferedReader( new FileReader( args[ 0 ] ) );
      String entry = reader.readLine();

      while( entry != null ) {
          List< String > document = new NGrams( entry,
                          Integer.parseInt( params.get( "gramSize" ) ) )
                          .generateNGramsWithoutLabel();

          ClassifierResult result = classifier.classifyDocument(
                           document.toArray( new String[ document.size() ] ),
                           params.get( "defaultCat" ) );

          entry = reader.readLine();
      }
  } catch( final IOException ex ) {
   ex.printStackTrace();
  } catch( final InvalidDatastoreException ex ) {
   ex.printStackTrace();
  }
 }
}

以下是错误消息: -

  

线程“main”中的异常java.lang.NoSuchMethodError:org.apache.mahout.common.HadoopUtil.overwriteOutput(Lorg / apache / hadoop / fs / Path;)V

     

at org.apache.mahout.classifier.bayes.mapreduce.bayes.BayesDriver.runJob(BayesDriver.java:39)

     

at org.apache.mahout.classifier.bayes.TrainClassifier.trainNaiveBayes(TrainClassifier.java:54)

     

在Starter.main(Starter.java:42)

我试图在整个互联网上寻找“org.apache.mahout.common.HadoopUtil.overwriteOutput”,但我没有得到它们,有名为“org.apache.mahout.common.HadoopUtil”的库,但它不包含所需的子库。

请帮忙。

0 个答案:

没有答案