【问题标题】:Custom recommender jobs using apache mahout 0.11.2 over hadoop在 hadoop 上使用 apache mahout 0.11.2 的自定义推荐作业
【发布时间】:2016-07-26 17:36:33
【问题描述】:

我是 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

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

【问题讨论】:

    标签: java apache mahout hadoop2 mahout-recommender


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 2023-04-07
      • 1970-01-01
      • 2015-03-05
      • 2014-09-21
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2014-04-05
      相关资源
      最近更新 更多