Как я могу использовать mahout с hadoop в Eclipse?
Я хочу использовать eclipse для разработки своего проекта с mahout-0.9 и hadoop-2.2.0.
Я мог успешно запустить свой код с mahout-0.9. Но я столкнулся с проблемой, как я мог запустить свой проект с модом hadoop? Я думаю, что мне нужно установить hadoop на моем компьютере и использовать команду для его запуска. Тогда я мог запустить свой проект в Eclipse с модом hadoop.
Так как Mahout может использовать MAHOUT_LOCAL
определить локальный мод или мод hadoop в Linux. Но когда я устанавливаю переменную среды MAHOUT_LOCAL
на "", он также использует локальный мод, почему?
Если в eclipse невозможно запустить mahout с hadoop, как я могу запустить свой проект? Спасибо:)
Мой пример кода
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 ответ
Ваш пример не код Hadoop. Рекомендатели Mahout входят в версии "in-memory", не относящиеся к hadoop, как вы использовали в своем примере, и версии Hadoop. Версия Hadoop имеет совершенно другой API, поскольку она рассчитывает все рекомендации для всех пользователей и помещает их в файлы HDFS. Вы можете запустить версию Hadoop из командной строки на компьютере, который является клиентом Hadoop (знает, как взаимодействовать с кластером Hadoop). Доступ, набрав mahout recommenditembased
и он напечатает экран справки.
После того, как вы запустите задание hadoop в кластере, вам нужно будет написать код для поиска записей для конкретного пользователя из этих файлов.
Это часто делается путем написания кода для хранения рекомендаций в базе данных и использования запросов для извлечения записей во время выполнения.