项目作者: dep-810b-studs
项目描述 :
Поиск top 10ти трендовых технологий средствами BigData(hadoop, spark, hive)
高级语言:
项目地址: git://github.com/dep-810b-studs/top-technologies-searcher.git
Общее задание
1. Решить задачу с помощью Java-программы на MapReduce:
- Записать суммарное время обработки данных (CPUtime). Замерять время работы задачи в общем случае не имеет смысла, так как параллельно на кластере часть ресурсов может быть выделено под другие задачи других пользователей._
- Предложить шаги по оптимизации обработки данных (например, уменьшение количества этапов Map-Reduce, оптимизация Join)
- Реализовать оптимизацию обработки данных, записав суммарное время обработки.
2. Решить задачу на HiveSQL:
- Провалидировать получившийся датасет с результатом MapReduce
- Записать суммарное время обработки данных
- Сравнить результаты с JavaMapReduce, объяснить разницу в скорости работы MapReduce и Hive
- Попробовать запустить те же SQL запросы на ImpalaSQL, описать результат (как положительный, так и отрицательный)
3. Решить задачу на ApacheSpark (Java 8 или Scala)
- Провалидировать получившийся датасет с результатом MapReduce
- Записать суммарное время обработки данных
- Сравнить результаты с JavaMapReduce и ApacheHive, объяснить разницу в скорости работы
- Перечислить возникшие проблемы и субъективно сравнить сложность реализации с предыдущими методами
Предлагаемые шаги
- Просмотреть исходные структуры данных, пути где они лежат и выписать используемые файлы и атрибуты. Просмотреть примеры значений исходных атрибутов, для того, чтобы оценить качество данных и необходимость их очистки или преобразования (trim(), toLowerCase()). Документацию по исходной схеме Stackoverflow можно посмотреть тут: https://meta.stackexchange.com/questions/2677/database-schema-documentation-for-the-public-data-dump-and-sede При желании, к данным основного сайта stackoverflow.com, можно добавить другие сайты из семейства stackexchange. Все они имеют одинаковые структуры данных, поэтому логика обработки меняться не будет.
- Составить на бумаге план выполнения задачи в простых шагах (группировка, сортировка, join)
- Реализовать шаги, проверяя корректность данных после каждого шага, например, с помощью https://data.stackexchange.com/stackoverflow/query/new или другой технологии (Hive, Impala). Для больших таблиц можно использовать подмножество данных (например, Posts_sample) для экономии времени.
- После того, как реализация будет проверена на подмножестве данных, можно запустить ее на полном наборе данных, замерив производительность.
Найти Top 10 трендовых технологий
- Технологии в IT-области развиваются достаточно быстро, поэтому IT-специалисты должны постоянно следить за трендами и изучать новые технологии, фреймворки, паттерны, подходы. С другой стороны, работодатели, которые заинтересованы в поиске лучших специалистов, будут стремиться использовать наиболее трендовые технологии, чтобы повысить привлекательность вакансии.
- Предполагается, что популярность технологии отражается в степени активности пользователей StackOverflow. Вопрос ассоциируется с технологией по наличию тега.
Для определения популярности, можно использовать (с разными весами):
- наличие вопроса с тегом технологии
- количество ответов
- количество голосов за вопрос
- активность в комментариях
Увеличение популярности можно понимать как увеличение доли вопросов/ответов/комментариев со временем.
Например, можно взять одинаковые интервалы (по годам или месяцам), определяя прирост популярности, как процент от кол-ва вопросов предыдущего периода. Таким образом, самые трендовые технологии можно определить, отсортировав по сумме прироста популярности в течение нескольких последних лет.