我想使用eclipse开发我的项目,使用mahout-0.9和hadoop-2.2.0。
我可以用mahout-0.9成功运行我的代码。但是我面临着一个问题:如何用hadoop mod运行我的项目?我想我必须在我的计算机上安装hadoop,并使用命令启动它。然后我可以用hadoop mod在eclipse中运行我的项目。
既然驯兽师能用 MAHOUT_LOCAL
确定linux中的本地mod或hadoop mod。但是当我设置环境变量 MAHOUT_LOCAL
为了“,”它还使用本地mod,为什么?
如果不可能在eclipse中用hadoop运行mahout,那么如何运行我的项目呢?谢谢:)
我的示例代码
package com.predictionmarketing.itemrecommend;
import java.io.File;
import java.io.IOException;
import java.util.List;
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.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.UncenteredCosineSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;
public class ItemRecommend {
public static void main(String[] args) {
try {
DataModel model = new FileDataModel(new File("data/test.txt"));
ItemSimilarity similarity = new UncenteredCosineSimilarity(model);
Recommender recommender = new GenericItemBasedRecommender(model, similarity);
List<RecommendedItem> recommendations = recommender.recommend(2, 10);
for(RecommendedItem recommendation : recommendations) {
System.out.println(recommendation.getItemID() + "," + recommendation.getValue());
}
} catch (IOException e) {
System.out.println("There was an error.");
e.printStackTrace();
} catch (TasteException e) {
System.out.println("There was a Taste Exception");
e.printStackTrace();
}
}
}
1条答案
按热度按时间afdcj2ne1#
你的例子不是hadoop代码。mahout推荐程序有非hadoop的“内存”版本,正如您在示例中使用的,还有hadoop版本。hadoop版本有一个非常不同的api,因为它计算所有用户的所有建议,并将这些建议放在hdfs文件中。您可以在作为hadoop客户机(知道如何与hadoop集群通信)的计算机上从命令行运行hadoop版本。通过键入访问
mahout recommenditembased
它将打印一个帮助屏幕。一旦在集群上运行hadoop作业,就需要编写代码从这些文件中查找特定用户的rec。
这通常是通过编写代码将建议存储在数据库中,并在运行时使用查询检索rec来实现的。