Java 在hadoop上使用ApacheMahout 0.11.2定制推荐程序作业
我是Apache Mahout的新手。我正在使用ApacheMahout 0.11.2。所以为了尝试一下,我创建了名为SampleRecommender.java的java类,如下所示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
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项目相似性:
- ActionML的通用推荐程序: UR建立在PredictionIO ML框架之上: