Проект прогнозирования количества поездок такси по округам города Чикаго (США) с использованием фрэймворка PySpark.
В качестве результата работы по проекту предполагается проведенное исследование в Jupyter-ноутбуке.
Ноутбуки расположены в папке notebooks проекта:
01_eda_geo_keys_all.ipynb - исследование данных обработка гео-ключей
02_aggfe.ipynb - агрегирование данных, конструирование признаков
03_ml.ipynb - машинное обучение
recipies.ipynb - рецепты
Testing_PySpark.ipynb - тестирование способов создания точки входа и некоторых операций.
Папка scripts
проекта содержит скрипт для установки и запуска на локальной машине контейнеров с кластером Spark (сеть, мастер-нода, 4 работника, Jupyter контейнер для разработки).
Инструкция по установке находится там же.
(Ридми по настройке кластера: README_Cluster.md)
Работа велась в Windows 10. В той же папке scripts
находятся скрипты для старта, остановки и удаления всего кластера, запускаемые в PowerShell, например, командой .\start_cont.bat
. Там же содержится скрипт для вывода информации об установленных виртуальных окружениях и менеджерах пакетов, и для сохранения зависимостей в файл.
Разработка модулей велась в VSCode с установленным плагинами для удаленной разработки (Dev Cotainers
, Remote Development
) в контейнере Docker
, плагин Docker также должен быть установлен.
Подключение VSCode - к запущенному контейнеру: jupyter_lab
Предполагается разработка в глобальном пространстве (применительно к виртуальным окружениям) контейнера. Т.е. необходимо деактивировать все возможные активные окружения (при их наличии). Используемый менеджер пакетов - Pip. Глобальное пространство контейнера, обозреваемое в терминале VSCode может не содержать бибиотеку PySpark. Может потребовать установка библиотеки pyspark. В моем случае потребовалось: pip install pyspark==3.4.1
Код инструкций Python-программ упакован в модульные файлы в папке ChiSpark, откуда в ноутбук импортируются готовые классы для работы по проекту. Это сделано для сокращения места, занимаего кодом в ноутбуке, а также для возможности в дальнейшем использовать эти модули.