Java 在hadoop上使用ApacheMahout 0.11.2定制推荐程序作业

Java 在hadoop上使用ApacheMahout 0.11.2定制推荐程序作业,java,apache,mahout,hadoop2,mahout-recommender,Java,Apache,Mahout,Hadoop2,Mahout Recommender,我是Apache Mahout的新手。我正在使用ApacheMahout 0.11.2。所以为了尝试一下,我创建了名为SampleRecommender.java的java类,如下所示 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.m

我是Apache Mahout的新手。我正在使用ApacheMahout 0.11.2。所以为了尝试一下,我创建了名为SampleRecommender.java的java类,如下所示

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();
}
}}
f包;
导入java.io.File;
导入java.io.IOException;
导入org.apache.mahout.cf.taste.common.TasteException;
导入org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
导入org.apache.mahout.cf.taste.impl.neighbor.thresholdUserNeighbor;
导入org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
导入org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
导入org.apache.mahout.cf.taste.model.DataModel;
导入org.apache.mahout.cf.taste.neighborary.userneighborary;
导入org.apache.mahout.cf.taste.recommender.RecommendeItem;
导入org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
导入org.apache.mahout.cf.taste.similarity.ItemSimilarity;
导入org.apache.mahout.cf.taste.similarity.UserSimilarity;
导入java.util.List;
公共类采样器{
公共静态void main(字符串参数[]){
试一试{
DataModel DataModel=新文件DataModel(新文件(args[0]);
//创建用户相似性对象。
UserSimilarity UserSimilarity=新PearsonCorrelationSimilarity(数据模型);
//正在创建UserNeighbourHHood对象。
UserNeighborary UserNeighborary=新的阈值UserNeighborary(1.0,usersimilarity,datamodel);
//创建用户推荐程序
UserBasedRecommender recommender=新的GenericUserBasedRecommender(数据模型、用户邻居、用户相似性);
列表推荐=(列表)推荐人。推荐(2,3);
System.out.println(recommendations.size());
对于(int i=0;i
我设法从命令行运行与
java-cp n.jar f.sampleRecommender n_lib/wishlistdata.txt

现在,从我在互联网和《Mahout in action》一书中读到的内容,我明白了同样的代码可以通过使用以下命令在hadoop上运行。 首先,我需要将samplecommender.java包含到现有的apache-mahout-distribution-0.11.2/mahout-mr-0.11.2-job.jar中。所以我遵循以下程序

jar uf/Users/rohitjain/Documents/apache-mahout-distribution-0.11.2/mahout-mr-0.11.2-job.jar samplerecommender.jar

然后,我尝试使用以下命令运行mahout作业

bin/hadoop-jar/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

但它给了我一个错误:

意外--处理作业特定选项时推荐ClassName:

我根据下面提到的“mahout in action”一书中给出的语法尝试了上述命令

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


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

正在运行的Mahout已经过时,您使用的代码正在被弃用

如今,Mahout运行在更现代的计算平台上,如Spark。对于最新的Mahout推荐程序,您可以从命令行界面开始激发itemsimilarity,并将其与Solr或Eleasticsearch集成。或者,您也可以选择完全集成的端到端解决方案,链接如下:

  • 使用Mahout构建推荐人:
  • Mahout spark项目相似性:
  • ActionML的通用推荐程序: UR建立在PredictionIO ML框架之上:

正在运行的Mahout已过时,您使用的代码已被弃用

如今,Mahout运行在更现代的计算平台上,如Spark。对于最新的Mahout推荐程序,您可以从命令行界面开始激发itemsimilarity,并将其与Solr或Eleasticsearch集成。或者,您也可以选择完全集成的端到端解决方案,链接如下:

  • 使用Mahout构建推荐人:
  • Mahout spark项目相似性:
  • ActionML的通用推荐程序: UR建立在PredictionIO ML框架之上: