繁体   English   中英

自定义推荐工作使用apache mahout 0.11.2 over hadoop

[英]Custom recommender jobs using apache mahout 0.11.2 over hadoop

我是Apache Mahout的新手。 我正在使用Apache mahout 0.11.2。 所以为了试一试,我创建了一个名为samplereccommender.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();
}
}}

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

现在从我在互联网上阅读并预订“Mahout in action”我了解到可以通过使用以下命令在hadoop上运行相同的代码。 首先,我需要将我的SampleReccommender.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

但它给了我一个错误:

处理特定于作业的选项时出现意外的--recommenderClassName:

我根据给出的“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 =输出\\ --recommenderClassName \\ org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender

我做错了吗? 还告诉我,我用于独立实现的代码是否可用于推荐器或它需要所有不同的实现?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM