项目作者: 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, объяснить разницу в скорости работы
  • Перечислить возникшие проблемы и субъективно сравнить сложность реализации с предыдущими методами

Предлагаемые шаги

  1. Просмотреть исходные структуры данных, пути где они лежат и выписать используемые файлы и атрибуты. Просмотреть примеры значений исходных атрибутов, для того, чтобы оценить качество данных и необходимость их очистки или преобразования (trim(), toLowerCase()). Документацию по исходной схеме Stackoverflow можно посмотреть тут: https://meta.stackexchange.com/questions/2677/database-schema-documentation-for-the-public-data-dump-and-sede При желании, к данным основного сайта stackoverflow.com, можно добавить другие сайты из семейства stackexchange. Все они имеют одинаковые структуры данных, поэтому логика обработки меняться не будет.
  2. Составить на бумаге план выполнения задачи в простых шагах (группировка, сортировка, join)
  3. Реализовать шаги, проверяя корректность данных после каждого шага, например, с помощью https://data.stackexchange.com/stackoverflow/query/new или другой технологии (Hive, Impala). Для больших таблиц можно использовать подмножество данных (например, Posts_sample) для экономии времени.
  4. После того, как реализация будет проверена на подмножестве данных, можно запустить ее на полном наборе данных, замерив производительность.

Найти Top 10 трендовых технологий

  • Технологии в IT-области развиваются достаточно быстро, поэтому IT-специалисты должны постоянно следить за трендами и изучать новые технологии, фреймворки, паттерны, подходы. С другой стороны, работодатели, которые заинтересованы в поиске лучших специалистов, будут стремиться использовать наиболее трендовые технологии, чтобы повысить привлекательность вакансии.
  • Предполагается, что популярность технологии отражается в степени активности пользователей StackOverflow. Вопрос ассоциируется с технологией по наличию тега.

Для определения популярности, можно использовать (с разными весами):

  • наличие вопроса с тегом технологии
  • количество ответов
  • количество голосов за вопрос
  • активность в комментариях

Увеличение популярности можно понимать как увеличение доли вопросов/ответов/комментариев со временем.
Например, можно взять одинаковые интервалы (по годам или месяцам), определяя прирост популярности, как процент от кол-ва вопросов предыдущего периода. Таким образом, самые трендовые технологии можно определить, отсортировав по сумме прироста популярности в течение нескольких последних лет.