- •Курсовая работа
- •Задание
- •Отзыв на курсовую работу по дисциплине
- •1.Теоретическая часть 7
- •2. Практическая часть 14
- •1.Теоретическая часть
- •1.1 Основные понятия и определения
- •1.2 Теоретическая реализация конвейера данных средствами VirtualBox
- •2.1 Реализация конвейера данных средствами VirtualBox
- •2. Практическая часть
- •2.1 Ответ на вопросы с анализом полученных данных
- •1. Теоретическая часть
2.1 Ответ на вопросы с анализом полученных данных
Необходимо выявить топ десять смен с наилучшими продажами за всё время. Итоговая таблица должна содержать дату, чайную и итоговую сумму за смену. Результат представлен на Рисунке 2.27.
Рисунок 2.27 — Смены с самыми большими продажами
Визуализируем полученный результат на гистограмме. Результаты визуализации представлены на Рисунке 2.28.
Рисунок 2.28 — Визуализация мест с самыми большими продажами
Необходимо выявить топ чайных по продажам за январь 2022 года. Итоговая таблица должна содержать название чайной и сумму продаж за вышеуказанный год. Результаты представлены на Рисунке 2.29.
Рисунок 2.29 — Лучшие чайные по продажам за январь 2023 года
Необходимо вывести информацию о днях, в которые чайная «Афимолл Сити» имела общую сумму продаж более 140 000 рублей. В ходе такого анализа можно выявить наиболее прибыльные дни или сезоны для составления планов продаж. Результаты представлены на Рисунке 2.30.
Рисунок 2.30 — Дни с продажами более 140 тысяч рублей
Визуализируем показатели с помощью гистограммы. Результаты представлены на Рисунке 2.31.
Рисунок 2.31 — Визуализация продаж чайной «Афимолл Сити»
Заключение
Понятие «Big Data» появилось в конце 1990-х годов, но начало своего пути как отдельное направление в информационных технологиях получило лишь в 2000-х годах. Настоящий взлет Big Data произошел с развитием интернета, социальных сетей, мобильных устройств, датчиков, IoT и других технологий, которые создают и накапливают большие объемы данных.
Big Data возник из-за резкого увеличения объема данных, которые создаются и накапливаются в различных областях деятельности.
В курсовой работе разработан конвейер для предобработки и маршрутизации данных с помощью VirtualBox.
Использованы продукты Apache и те, которые с ним работают.
Конвейер помогает обрабатывать большие массивы данных. В курсовой работе рассматривались данные падения метеоритов на Землю. Созданный конвейер подойдет под работу с любыми данными, где обрабатываются координаты и характеристики, привязанные к этим координатам.
Таким образом, проблема обработки данных, содержащие координаты, решена.
Цель — разработать конвейер для предобработки и маршрутизации данных с помощью VirtualBox достигнута.
Задачи, решенные в данной курсовой работе:
найти и выбрать данные из предоставленных источников;
построить конвейер на основе изученных технологий для предобработки и маршрутизации выбранных данных;
применить методы визуализации и анализа подготовленных данных для ответа на сформулированные преподавателем вопросы;
подготовить отчет о проделанной работе.
Список использованных источников
1. Теоретическая часть
К. Дейт — Основы баз данных [Электронный ресурс]. Режим доступа:
Apache [Электронный ресурс]. Режим доступа: https://www.apache.org/foundation/
Hadoop: The Definitive Guide" — Tom White (O'Reilly Media, Inc., 2015). [Электронный ресурс]
Hive [Электронный ресурс]. Режим доступа: https://hive.apache.org/
Apache Sqoop User Guide" — Apache Sqoop PMC (Apache Software Foundation, 2019) [Электронный ресурс]. Режим доступа:
Spark [Электронный ресурс]. Режим доступа: https://spark.apache.org/
Apache Flume: Сбор распределенных журналов для Hadoop" Хари Шридхаран, O'Reilly Media, Inc., 2013 [Электронный ресурс]
Kafka: Полное руководство" Неха Нархеде, Гвен Шапира и Тодд Палино, O'Reilly Media, Inc., 2017 [Электронный ресурс]
Освоение MariaDB — Федерико Радззоли, Packt Publishing, 2017 [Электронный ресурс].
Словарь компьютерных терминов" Джон Дейнтит, Оксфордский университетский пресс, 2016
VirtualBox 6.0 Beginner's Guide" автор Тим Джонс, издательство Packt Publishing, 2019
Oracle [Электронный ресурс]. Режим доступа: https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/home-dir.html
HDFS [Электронный ресурс] Режим доступа: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
DataFrame [Электронный ресурс] Режим доступа: https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
Python [Электронный ресурс] Режим доступа: https://docs.python.org/3/
Flume [Электронный ресурс] Режим доступа: https://flume.apache.org/
Chicha San Chen [Электронный ресурс] Режим доступа: https://www.chichasanchen.com/en/
Приложения
Приложение A — код на языке программирование Python, в которой происходит подключение к базе данных, запрос 5-ти % всех строк в таблице с данными каждые 10 секунд и создание файла из полученных строк в формате CSV в папке Spooldir.
Приложение А
import csv
import pymysql
import schedule
import time
import os
# Параметры подключения к базе данных
DB_HOST = 'localhost'
DB_PORT = 3306
DB_USER = 'student'
DB_PASSWORD = 'student'
DB_NAME = 'labs'
# Папка для сохранения данных
CSV_FOLDER = '/home/student/Labs/C3U4/spooldir/'
# Запрос для получения всех строк в таблице
SQL_QUERY = 'SELECT * FROM meteor'
# Функция для выполнения запроса и сохранения данных в CSV-файл
def fetch_data_to_csv():
# Подключение к базе данных
conn = pymysql.connect(host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME)
cursor = conn.cursor()
cursor.execute(SQL_QUERY)
# Получение данных из базы данных
rows = cursor.fetchall()
# Закрытие соединения
cursor.close()
conn.close()
# Разбиение данных на части по 5%
total_rows = len(rows)
rows_limit = round(total_rows * 0.05)
for i in range(0, total_rows, rows_limit):
# Генерация имени файла
filename = f"data{i//rows_limit}.csv"
file_path = os.path.join(CSV_FOLDER, filename)
# Сохранение данных в CSV-файл
with open(file_path, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['id', 'data', 'teahouse', 'receipts', 'cups', 'hall', 'delivery', 'yandex', 'score'])
for row in rows[i:i+rows_limit]:
writer.writerow(row)
print(f'Data fetched and saved to file {filename}')
# Задача для выполнения запроса и сохранения данных в CSV-файл
def job():
print('Fetching data...')
fetch_data_to_csv()
# Запуск задачи каждые 10 секунд
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
