2013-07-29 2 views
2

Я хочу написать программу Java, которая выполняет задание MapReduce (например, количество слов). Вход от Redis. Как я могу написать класс карты для поочередного извлечения из Redis и выполнить какой-либо процесс в классе Map, как это было раньше, чем читать с HDFS?MapReduce read input от Redis

ответ

2

Нет функции OOTB, которая позволяет нам это делать. Но вы можете найти такие вещи, как Jedis. Jedis - это клиент Java, с помощью которого вы можете читать/записывать данные в/из Redis. См. Пример this.

Если вы не сильно связаны с Java, вы также можете найти R3. R3 - это механизм для преобразования карты, написанный на python, с использованием бэкэнда Redis.

HTH

+0

Хм ... это выглядит так усложнять. Есть ли способ, который просто читает набор из Redis (используйте Jedis) и разбирается с классом Mapper в качестве значения? – user2597504

+0

Не знаю. Вероятно, вы можете подождать еще некоторое время, чтобы эксперты могли комментировать, поскольку я не очень разбираюсь в материалах Redis. – Tariq

+0

хорошо, спасибо большое! – user2597504

0

Положите свои ключи в HDFS. В map() просто запрос из redis на основе ключа ввода.

+0

Выполнение этого потеряет преимущество использования ваших данных в памяти. – MasterScrat

1

Очевидно, вам необходимо настроить свой InputFormat. Прочитайте this учебник, чтобы узнать, как написать свой собственный InputFormat и RecordReader.

0

Попробуйте Redisson Это редизайн встроенной памяти данных для Java. Он позволяет выполнять преобразование карты по данным, хранящимся в Redis.

Дополнительная документация here.