【发布时间】: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