Практическая работа: Паттерны проектирования MapReduce

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Ордена трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

Кафедра «Интеллектуальные системы в управлении и автоматизации»

Практическая работа

«Паттерны проектирования MapReduce»

по дисциплине: Big data. Методы и средства анализа

Выполнил:

Студент группы М272001

Бугаева Г.М.

Проверила:

д. ф.-м.н, профессор Воронова Л.И.

Москва 2021

Вводные данные

Цель: В данном практикуме рассматриваются паттерны проектирования MapReduce запросов, включающие в себя: фильтрующие паттерны; суммирующие паттерны; структурные паттерны.

Задачи: выполнить MapReduce-запросы при помощи следующих шаблонов: паттерн проектирования программный код

1. Фильтрующие паттерны. Реализовать вывод строк, состоящих из одного предложения или меньше.

2. Фильтрующие паттерны. Реализовать вывод топ-10 самых длинных постов с форума.

3. Суммирующие паттерны. Составить инвертированный индекс по текстам сообщений на форуме.

4. Суммирующие паттерны. Найти корреляцию между днем недели и суммой денежных средств, которые потрачены на предметы.

5. Суммирующие паттерны. Подсчитать среднеарифметического значения всех покупок, совершенных в воскресенье, с использованием Combiner.

6. Структурные паттерны. Объединить два набора данных: сообщения с форума и пользователей по полю id-автора.

Выполнение

1) Фильтрующие паттерны. Реализовать вывод строк, состоящих из одного предложения или меньше.

Для решения задачи разработан программный код (рис. 1)

Рисунок 1 - Программный код

Результат выполнения программного кода:

Рисунок 2 - Результат выполнения

2) Допишите код программы mapper, которая находит топ-10 самых длинных постов с форума.

Для решения задачи разработан программный код (рис. 3)

Рисунок 3 - Программный код

Результат выполнения программного кода (рис. 4):

Рисунок 4 - Результат 7

3) Напишите MapReduce-запрос, реализующий суммирующий паттерн для составления инвертированного индекса по текстам сообщений на форуме. Для каждого слова надо вывести все id сообщений, в которых данное слово встретилось. Найти: сколько раз слово «fantastic» встретилось на форуме и выписать id всех записей, в которых было слово «fantastically».

Для решения задачи модифицируем исходные файлы mapper.py и reducer.py: Mapper (рис. 5).

Рисунок 5 - Mapper.py

Reducer (рис. 6):

Рисунок 6 - Reducer.py

Результат (рис. 7):

Рисунок 7 - Результат

4) Требуется узнать, есть ли корреляция между днем недели и суммой денежных средств, которые потрачены на предметы. Задача - узнать среднее и стандартное отклонение для продажи в день недели.

Для решения задачи модифицируем исходные файлы mapper.py и reducer.py:

Mapper (рис. 8):

Рисунок 8 - Mapper.py

Reducer (рис. 9):

Рисунок 9 - Reducer.py

Результат (рис. 10):

Рисунок 10 - Результат

5) Напишите MapReduce-задачу, реализующую суммирующий паттерн для подсчета среднеарифметического значения всех покупок, совершенных в воскресенье, с использованием Combiner и посмотрите значение reducer input records, перейдя по ссылке в терминале после выполнения запроса.

Для этого выполним следующие команды в терминале:

$ gedit ~/.bashrc

В открывшемся файле изменим строку

cdh4.1.1.jar -mapper $1 -reducer $2 -file $1 -file $2 -input $3 -output $4

допишем:

cdh4.1.1.jar -mapper $1 -reducer $2 -combiner $2 -file $1 -file $2 -input $3 -output $4

Сохраним:

$ source ~/.bashrc

Теперь MapReduce-запрос будет использовать Combiner.

Результат отчета задачи до включения Combiner:

Результат отчета задачи после включения Combiner:

6) Объедините два набора данных: сообщения с форума и пользователей по полю id-автора.

Используем следующие поля для сообщений с форума:

author_id, id, title, tagnames, node_type, parent_id, abs_parent_id, added_at, score

и пользователя с форума:

user_id, "A", reputation, gold, silver, bronze

Mapper (рис.11):

Рисунок 11 - Mapper.py

Reducer (рис.12):

Рисунок 12 - Reducer.py

Результат (рис.13):

Рисунок 13 - Результат

Вывод

В результат проведения практикума были рассмотрены паттерны проектирования MapReduce запросов, включающие в себя: фильтрующие паттерны; суммирующие паттерны; структурные паттерны.