Ордена трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра «Интеллектуальные системы в управлении и автоматизации»
Практическая работа
«Паттерны проектирования 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 запросов, включающие в себя: фильтрующие паттерны; суммирующие паттерны; структурные паттерны.