Ознакомиться с концепцией распределенных вычислений на примере модели MapReduce. Научиться разрабатывать многопоточную систему для обработки больших данных и применять её для анализа данных о продажах.
У вас в репозитории есть несколько CSV-файлов, представляющих данные о продажах, например:
transaction_id,product_id,category,price,quantity
1,101,electronics,300.00,2
2,102,books,15.00,5
3,101,electronics,300.00,1
4,103,toys,25.00,4
5,102,books,15.00,3
Необходимо:
- Вычислить общую выручку для каждой категории товаров.
- Подсчитать общее количество проданных товаров по категориям.
- Отсортировать категории по общей выручке в порядке убывания.
Пример вывода:
Category Revenue Quantity
electronics 900.00 3
books 120.00 8
toys 100.00 4
Основная часть:
- Используем hadoop
- Написать реализацию MapReduce для обработки CSV-файлов.
- Реализовать многопоточность в каждой фазе:
- Map — обработка строк из файлов.
- Shuffle/Sort — группировка данных по категориям.
- Reduce — вычисление итоговых значений для каждой категории.
- Сохранить результат в файл.
- Обеспечить потокобезопасность при работе с общими данными.
- Реализовать поддержку одновременной обработки большого количества файлов.
Дополнительные задачи (по желанию):
- Добавить возможность выбора метрики анализа (например, подсчёт средней цены товара в категории).
Результатом работы является сам код, файл с результатами и экспериментальные данные по быстродействию работы написанного кода при изменении числа worker-ов / частей, на которые разбивается файл