Внимание!
Из необходимого для успешной работы всей инфраструктурной обвязки:
-
docker
-
Makefile (в противном случае команды можно запускать руками, копируя их из Makefile).
Для решения данного задания необходимо:
-
Сделать форк от master из репозитория https://github.com/OtusTeam/data-engineer
-
Перейти в папку spark_ml (командой в консоли: cd spark_ml)
-
Запустить докер-контейнер с jupyter notebook
-
Последовательно выполнить все ноутбуки в Readme.md (построить модель на Python + scikit-learn, построить модель на Apache Spark)
-
При построении модели на Apache Spark необходимо в качестве классификатора необходимо использовать вместо LogisticRegression на RandomForest.
Документация по API представлена здесь - https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-classifier. Обратите внимание что необходимо использовать новое API (spark.ml).
-
После построения модели и ее сохранения на диск, необходимо запустить стриминг из ноутбука (tweet_feeder).
-
Далее необходимо применить модель в streaming mode. Заготовка для имплементации находится в ноутбуке (apply_model). В базовом подходе достаточно просто выводить результат применения модели. Обратите внимание что в качестве результата мы хотим видеть в отдельной колонке вероятность негативного твита (внутри поля probability представлен вектор из двух значений, нам нужна отдельная колонка с последним значением). Напишите udf который будет доставать эту колонку отдельно.
-
Предоставьте корректно работающий форк на проверку.
Advanced:
- Попробуйте выводить статистику по количеству "негативных" и "позитивных" твитов за последние 10 секунд скользящим окном.