/most-popular-product

Primary LanguageScalaApache License 2.0Apache-2.0

most-popular-product

Spark-приложение для определения самого популярного продукта у каждого клиента. Если таких несколько, то выводятся все варианты, находящиеся на первом месте по полурярности.

Приложение принимает на вход три файла в формате csv и формирует выходной файл с колонками customerName и productName также в формате csv. Образец выходного файла расположен здесь.

Установка

Для работы с приложением требуется Docker и sbt.

Необходимо клонировать репозиторий проекта:

git clone git@github.com:mikhaildruzhinin/most-popular-product.git

Следующие действия выполняются в корневой папке проекта.

Сборка проекта выполняется командой

sbt assembly

Для сборки Docker-образов запустите скрипт

sh scripts/build-images.sh

для Linux и Mac, или скрипт

scripts/build-images.bat

для Windows.

Запуск

Для имитации Spark-кластера используются Docker-образы, объединённые в файл docker-compose.yml. Для запуска необходимо воспользоваться командой:

docker-compose up --scale spark-worker=3

После запуска контейнеров для подключения к командной строке внутри одного из них в новом окне введите команду:

 docker exec -it most-popular-product_spark-master_1 bash

Затем для запуска приложения необходимо выполнить следующую команду:

/spark/bin/spark-submit --class application.Main --deploy-mode client --master spark://$(hostname):7077 /opt/spark-apps/most-popular-product-assembly-0.1.0-SNAPSHOT.jar 

В результате в примонитрованной к Docker-контейнеру папке data появится папка result, содержащая получившиеся файлы в формате csv.