Бычков А.С. М8О-301Б-22
Анализ больших данных - лабораторная работа №2 - ETL реализованный с помощью Spark
Одним из самых популярных фреймворков для работы с Big Data является Apache Spark. Apache Spark - мощный фреймворк, который предлагает широкий набор функциональности для простого написания ETL-пайплайнов.
Что необходимо сделать?
Необходимо реализовать ETL-пайплайн с помощью Spark, который трансформирует данные из источника (файлы mock_data.csv с номерами) в модель данных звезда в PostgreSQL, а затем на основе модели данных звезда создать ряд отчетов по данным в одной из NoSQL базах данных обязательно и в нескольких других опционально (будет бонусом). Каждый отчет представляет собой отдельную таблицу в NoSQL БД.
Какие отчеты надо создать?
- Витрина продаж по продуктам Цель: Анализ выручки, количества продаж и популярности продуктов.
- Топ-10 самых продаваемых продуктов.
- Общая выручка по категориям продуктов.
- Средний рейтинг и количество отзывов для каждого продукта.
- Витрина продаж по клиентам Цель: Анализ покупательского поведения и сегментация клиентов.
- Топ-10 клиентов с наибольшей общей суммой покупок.
- Распределение клиентов по странам.
- Средний чек для каждого клиента.
- Витрина продаж по времени Цель: Анализ сезонности и трендов продаж.
- Месячные и годовые тренды продаж.
- Сравнение выручки за разные периоды.
- Средний размер заказа по месяцам.
- Витрина продаж по магазинам Цель: Анализ эффективности магазинов.
- Топ-5 магазинов с наибольшей выручкой.
- Распределение продаж по городам и странам.
- Средний чек для каждого магазина.
- Витрина продаж по поставщикам Цель: Анализ эффективности поставщиков.
- Топ-5 поставщиков с наибольшей выручкой.
- Средняя цена товаров от каждого поставщика.
- Распределение продаж по странам поставщиков.
- Витрина качества продукции Цель: Анализ отзывов и рейтингов товаров.
- Продукты с наивысшим и наименьшим рейтингом.
- Корреляция между рейтингом и объемом продаж.
- Продукты с наибольшим количеством отзывов.
В каких NoSQL БД должны быть эти отчеты:
- Clickhouse (обязательно)
- Cassandra (опционально, если будет реализация, то это бонус)
- Neo4J (опционально, если будет реализация, то это бонус)
- MongoDB (опционально, если будет реализация, то это бонус)
- Valkey (опционально, если будет реализация, то это бонус)
Алгоритм:
- Клонируете к себе этот репозиторий.
- Устанавливаете себе инструмент для работы с запросами SQL (рекомендую DBeaver).
- Устанавливаете базу данных PostgreSQL (рекомендую установку через docker).
- Устанавливаете Apache Spark (рекомендую установку через Docker. Для удобства написания кода на Python можно запустить вместе со JupyterNotebook. Для Java - подключить volume и собрать образ Docker, который будет запускать команду spark-submit с java jar-файлом при старте контейнера, сам jar файл собирается отдельно и кладется в подключенный volume)
- Скачиваете файлы с исходными данными mock_data( * ).csv, где ( * ) номера файлов. Всего 10 файлов, каждый по 1000 строк.
- Импортируете данные в БД PostgreSQL (например, через механизм импорта csv в DBeaver). Всего в таблице mock_data должно находиться 10000 строк из 10 файлов.
- Анализируете исходные данные с помощью запросов.
- Выявляете сущности фактов и измерений.
- Реализуете приложение на Spark, которое по аналогии с первой лабораторной работой перекладывает исходные данные из PostgreSQL в модель снежинку/звезда в PostgreSQL. (Убедитесь в коннективности Spark и PostgreSQL, настройте сеть между Spark и PostgreSQL, если используете Docker).
- Устанавливаете ClickHouse (рекомендую установку через Docker. Убедитесь в коннективности Spark и Clickhouse, настройте сеть между Spark и ClickHouse). (обязательно)
- Реализуете приложение на Spark, которое создаёт все 6 перечисленных выше отчетов в виде 6 отдельных таблиц в ClickHouse. (обязательно)
- Устанавливаете Cassandra (рекомендую установку через Docker. Убедитесь в коннективности Spark и Cassandra, настройте сеть между Spark и Cassandra). (опционально)
- Реализуете приложение на Spark, которое создаёт все 6 перечисленных выше отчетов в виде 6 отдельных таблиц в Cassandra. (опционально)
- Устанавливаете Neo4j (рекомендую установку через Docker. Убедитесь в коннективности Spark и Neo4j, настройте сеть между Spark и Neo4j). (опционально)
- Реализуете приложение на Spark, которое создаёт все 6 перечисленных выше отчетов в виде отдельных сущностей в Neo4j. (опционально)
- Устанавливаете MongoDB (рекомендую установку через Docker. Убедитесь в коннективности Spark и MongoDB, настройте сеть между Spark и MongoDB). (опционально)
- Реализуете приложение на Spark, которое создаёт все 6 перечисленных выше отчетов в виде 6 отдельных коллекций в MongoDB. (опционально)
- Устанавливаете Valkey (рекомендую установку через Docker. Убедитесь в коннективности Spark и Valkey, настройте сеть между Spark и Valkey). (опционально)
- Реализуете приложение на Spark, которое создаёт все 6 перечисленных выше отчетов в виде отдельных записей в Valkey. (опционально)
- Проверяете отчеты в каждой базе данных средствами языка самой БД (ClickHouse - SQL (DBeaver), Cassandra - CQL (DBeaver), Neo4J - Cipher (DBeaver), MongoDB - MQL (Compass), Valkey - redis-cli).
- Отправляете работу на проверку лаборантам.
Что должно быть результатом работы?
- Репозиторий, в котором есть исходные данные mock_data().csv, где () номера файлов. Всего 10 файлов, каждый по 1000 строк.
- Файл docker-compose.yml с установкой PostgreSQL, Spark, ClickHouse (обязательно), Cassandra (опционально), Neo4j (опционально), MongoDB (опционально), Valkey (опционально) и заполненными данными в PostgreSQL из файлов mock_data(*).csv.
- Инструкция, как запускать Spark-джобы для проверки лабораторной работы.
- Код Apache Spark трансформации данных из исходной модели в снежинку/звезду в PostgreSQL.
- Код Apache Spark трансформации данных из снежинки/звезды в отчеты в ClickHouse.
- Код Apache Spark трансформации данных из снежинки/звезды в отчеты в Cassandra.
- Код Apache Spark трансформации данных из снежинки/звезды в отчеты в Neo4j.
- Код Apache Spark трансформации данных из снежинки/звезды в отчеты в MongoDB.
- Код Apache Spark трансформации данных из снежинки/звезды в отчеты в Valkey.
