Как я могу использовать 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 в кластере, вам нужно будет написать код для поиска записей для конкретного пользователя из этих файлов.

Это часто делается путем написания кода для хранения рекомендаций в базе данных и использования запросов для извлечения записей во время выполнения.

Другие вопросы по тегам