2016-04-06 131 views
1

我是Apache Mahout的新手。我正在使用Apache Mahout 0.11.2。所以为了试一试,我创建了一个名为samplereccommender.java的java类,如下所示。自定义推荐工作使用Apache Mahout 0.11.2在hadoop

package f; 
import java.io.File; 
import java.io.IOException; 
import org.apache.mahout.cf.taste.common.TasteException; 
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; 
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood; 
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; 
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; 
import org.apache.mahout.cf.taste.model.DataModel; 
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; 
import org.apache.mahout.cf.taste.recommender.RecommendedItem; 
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender; 
import org.apache.mahout.cf.taste.similarity.ItemSimilarity; 
import org.apache.mahout.cf.taste.similarity.UserSimilarity; 
import java.util.List; 

public class SampleReccommender { 
    public static void main(String args[]){ 
     try{ 
      DataModel datamodel = new FileDataModel(new File(args[0])); 
      //Creating UserSimilarity object. 
      UserSimilarity usersimilarity = new PearsonCorrelationSimilarity(datamodel); 
      //Creating UserNeighbourHHood object. 
      UserNeighborhood userneighborhood = new ThresholdUserNeighborhood(1.0, usersimilarity, datamodel); 
      //Create UserRecomender 
      UserBasedRecommender recommender = new GenericUserBasedRecommender(datamodel, userneighborhood, usersimilarity); 
      List recommendations = (List) recommender.recommend(2, 3); 
      System.out.println(recommendations.size()); 
      for (int i=0; i< recommendations.size();i++) { 
       System.out.println(recommendations.get(i)); 
      } 
     } 
catch(Exception e){ 
    e.printStackTrace(); 
} 
}} 

我设法运行命令行相同的代码
java命令n.jar f.SampleReccommender n_lib/wishlistdata.txt

从我的互联网和书上阅读

现在“ Mahout在行动中“我明白,通过使用以下命令,可以在hadoop上运行相同的代码。 首先,我需要将SampleReccommender.java加入到现有的apache-mahout-distribution-0.11.2/mahout-mr-0.11.2-job.jar中。所以我遵循以下程序。

罐子UF /Users/rohitjain/Documents/apache-mahout-distribution-0.11.2/mahout-mr-0.11.2-job.jar samplerecommender.jar

然后我试图运行使用象夫的工作以下命令

仓/ hadoop的罐子/Users/rohitjain/Documents/apache-mahout-distribution-0.11.2/mahout-mr-0.11.2-job.jar org.apache.mahout.cf.taste.hadoop .item.RecommenderJob -i /input/wishlistdata.txt -o/output/--recommenderClassName \ f.SampleRecommender

但它给了我一个错误:

意外--recommenderClassName在处理作业专用选项:

我想上面的命令,根据提供的“象夫在行动”一书的语法,低于

如前所述

hadoop jar mahout-core-0.5-job.jar \ org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob \ -Dmapred.input.dir = input/ua.base.hadoop \ -Dmapred.output .dir = output \ --recommenderClassName \ org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender

我做错了什么?另外告诉我,我用于独立实现的代码是否可以用于推荐者作业,或者它需要所有不同的实现?

回答

0

Mahout in Action已过时,您正在使用的代码已被弃用。

如今,Mahout运行在像Spark这样更加现代化的计算平台上。对于最新的Mahout Recommender,您可以从命令行界面开始启动相似性并将其与Solr或Eleasticsearch集成。或者你可以拾取一个完全集成的终端到终端的解决方案链接如下: